来源:自学PHP网 时间:2017-08-07 15:11 作者: 阅读:次
[导读] 这篇文章主要介绍了PHP7扩展开发教程之Hello World实现方法,结合实例形式较为详细的分析了针对php7扩展的源码下载、设置、代码编辑及测试运行相关操作技巧,需要的朋友可以参考下...
本文实例讲述了PHP7扩展开发教程之Hello World实现方法。分享给大家供大家参考,具体如下: 一、下载PHP源代码 要开发PHP扩展,需要先下载PHP的源代码,一方面是因为我们的扩展一般会用到PHP自身定义的函数和宏,另一方面我们可以利用官方提供的工具减少工作量。 我下载了PHP-7.0.2,地址是: ./ext_skel --extname=hello ext目录下多了一个hello目录,我们后续的工作都在这个目录下面,工具已经为我们自动生成了一些文件。 config.m4配置文件 开发PHP扩展,在写C代码之前,要先配置一下这里。我们打开可以看到详细的注释说明,dnl是注释语法。 如果你的扩展用到了外部依赖,就配置--with-hello选项,否则配置--enable-hello选项,删除这下面3行的del注释 PHP_ARG_ENABLE(hello, whether to enable hello support, Make sure that the comment is aligned: [ --enable-hello Enable hello support]) PHP_ARG_WITH和PHP_ARG_ENABLE这两个宏用来配置configure选项,一个配置需要外部依赖的,另一个配置不需要外部依赖的 配置好的内容,在后面执行 php_hello.h头文件 类似于C语音的头文件,包含了一些自定义的结构和函数声明,在这个demo中暂时不需要改动 hello.c代码文件 真正的逻辑代码都在这个文件中,后面会详细介绍。 三、编写代码 好了,到这一步我们终于要开始写代码了,打开hello.c文件。 整个扩展的入口是zend_module_entry这个结构,具体的定义可以在Zend目录下的zend_modules.h文件中看到,一共有十几个属性,快速跳过,我们暂时只需要"hello world"。 zend_module_entry hello_module_entry = { STANDARD_MODULE_HEADER, "hello", hello_functions, PHP_MINIT(hello), PHP_MSHUTDOWN(hello), PHP_RINIT(hello), /* Replace with NULL if there's nothing to do at request start */ PHP_RSHUTDOWN(hello), /* Replace with NULL if there's nothing to do at request end */ PHP_MINFO(hello), PHP_HELLO_VERSION, STANDARD_MODULE_PROPERTIES }; STANDARD_MODULE_HEADER帮我们实现了前面6个属性 "hello"是扩展的名字 hello_functions是扩展包含的全部方法的集合 后面5个宏分别代表5个扩展特定方法 PHP_HELLO_VERSION是扩展的版本号,定义在头文件中 STANDARD_MODULE_PROPERTIES帮我们实现了剩下的属性 暂时都不需要修改,知道这是一个入口就行。顺着这个入口,我们继续看怎么给扩展添加方法,在hello_functions[]方法数组中已经有了一个示例方法confirm_hello_compiled,我们参考它写我们的方法hello_world const zend_function_entry hello_functions[] = { PHP_FE(confirm_hello_compiled, NULL) /* For testing, remove later. */ PHP_FE(hello_world, NULL) PHP_FE_END /* Must be the last line in hello_functions[] */ }; 先在扩展的方法数组中添加上hello_world,然后再定义hello_world。找到confirm_hello_compiled方法定义的地方,在它下面依葫芦画瓢,php_printf是Zend Engine中的printf方法。 PHP_FUNCTION(hello_world) { php_printf("Hello World!\n"); RETURN_TRUE; } 四、编译安装 最后就是编译安装我们的扩展了,安装过PHP扩展的同学不用看,没有经验的可以参考一下。 phpize ./configure make make install 现在PHP的扩展目录中已经有了hello.so这个文件,在php.ini中添加上扩展的配置 extension = hello.so 五、测试 写一个test.php方法,执行脚本就可以看到"Hello World!" <?php hello_world(); 、、、 希望本文所述对大家PHP程序设计有所帮助。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com