千家信息网

PHP怎么自定义扩展

发表于:2024-11-28 作者:千家信息网编辑
千家信息网最后更新 2024年11月28日,本篇内容主要讲解"PHP怎么自定义扩展",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"PHP怎么自定义扩展"吧!利用源码工具自动生成扩展目录结构先进入php
千家信息网最后更新 2024年11月28日PHP怎么自定义扩展

本篇内容主要讲解"PHP怎么自定义扩展",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"PHP怎么自定义扩展"吧!

利用源码工具自动生成扩展目录结构

先进入php源码ext目录下执行下面命令

/www/test/php/php/bin/php ext_skel.php --ext helloworldcd helloworld

修改config.m4配置文件,就是现在写的扩展是否用到外部依赖,就配置--with-hello选项,否则配置--enable-hello选项,按照自己的需求把注释去掉

dnl If your extension references something external, use 'with': PHP_ARG_WITH([helloworld],   [for helloworld support],   [AS_HELP_STRING([--with-helloworld],     [Include helloworld support])])dnl Otherwise use 'enable':

扩展功能书写

然后vim helloworld.c 进行扩展功能代码书写
先看下模块结构定义

zend_module_entry helloworld_module_entry = {        STANDARD_MODULE_HEADER,        "helloworld",                                   /* Extension name */        helloworld_functions,                   /* zend_function_entry */        PHP_MINIT(helloworld),                                                  /* PHP_MINIT - Module initialization */        NULL,                                                   /* PHP_MSHUTDOWN - Module shutdown */        PHP_RINIT(helloworld),                  /* PHP_RINIT - Request initialization */        NULL,                                                   /* PHP_RSHUTDOWN - Request shutdown */        PHP_MINFO(helloworld),                  /* PHP_MINFO - Module info */        PHP_HELLOWORLD_VERSION,         /* Version */        PHP_MODULE_GLOBALS(pib),    NULL,    NULL,    NULL,    STANDARD_MODULE_PROPERTIES_EX};

功能函数名字集合

static const zend_function_entry helloworld_functions[] = {        PHP_FE(helloworld_test1,                arginfo_helloworld_test1)        PHP_FE(helloworld_test2,                arginfo_helloworld_test2)        PHP_FE_END};

真正的功能函数代码

PHP_FUNCTION(helloworld_test2){        int argc = ZEND_NUM_ARGS();        char *messages = NULL;        size_t   messages_len = 0;        char *context = NULL;        size_t   context_len = 0;        zend_string *retval;        ZEND_PARSE_PARAMETERS_START(0, 2)                Z_PARAM_OPTIONAL                Z_PARAM_STRING(messages, messages_len)                Z_PARAM_STRING(context, context_len)        ZEND_PARSE_PARAMETERS_END();        retval = strpprintf(0, "Hello %s test %s", messages, context);        RETURN_STR(retval);}

函数参数定义

ZEND_BEGIN_ARG_INFO(arginfo_helloworld_test2, 0)        ZEND_ARG_INFO(0, str)ZEND_END_ARG_INFO()

编译安装

/www/test/php/php/bin/phpize./configure --with-php-config=/www/test/php/php/bin/php-configmake && make install

现在PHP的扩展目录中已经有了helloworld.so这个文件,在php.ini中添加上扩展的配置

extension = helloworld.so

然后就可以测试自己写的函数了helloworld_test2()

到此,相信大家对"PHP怎么自定义扩展"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

函数 功能 配置 目录 代码 内容 文件 源码 结构 学习 实用 更深 兴趣 参数 名字 命令 实用性 实际 就是 工具 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 输入网络安全密钥忘记了 软件开发顶岗实习周志 网络技术服务平台是干什么 服务器系统故障怎么自动修复 网络安全与智能制造产业基地 qq改聊天数据库 软件开发品质与成本 湖北电脑软件开发大概要多少钱 洗衣预约系统软件开发流程 何为软件开发模型 如何设置sql数据库的登陆密码 长沙绣世界网络技术公司 网络安全防御技术与实践 赴外软件开发 国家 国内食品安全现状大数据库 高校校园网络安全的现状分析 网络安全举报中心网址 律师事务所 网络安全 浙江服务器空调维修价格 mysql数据库拆分字段 口腔数据库营销 农村宅基地制度改革数据库设计 计算机的网络安全结束语 opc服务器dcom全端口映射 三调数据库成果怎么缩编 数据库报表设计删除记录按钮 自动化设备软件开发 知乎 要做好网络安全保密工作 C十十游戏程序员自搭服务器 汽车第三方检测软件开发商
0