创建扩展的基本步骤是什么。例子中我们会实现如下函数:输出内容:$php./test.php$helloword在扩展中实现一个say方法,调用say方法后输出hello单词。第一步:生成代码PHP为我们提供了一个生成基本代码的工具ext_skel。该工具位于PHP源代码的./ext目录中。$cdphp_src/ext/$./ext_skel--extname=sayextname参数的值为扩展名。执行ext_skel命令后,会在当前目录下生成一个同扩展名的目录。第二步,修改config.m4配置文件。config.m4的作用是配合phpize工具生成configure文件。配置文件用于环境检测。检查是否满足扩展编译运行所需的环境。现在我们开始修改config.m4文件。$cd./say$vim./config.m4打开,在config.m4文件后,你会发现这样一段文字。dnl如果你的扩展引用了外部的东西,使用with:dnlPHP_ARG_WITH(say,forsaysupport,dnl确保注释对齐:dnl[--with-sayIncludesaysupport])dnl否则使用enable:dnlPHP_ARG_ENABLE(say,是否启用saysupport,dnl确保注释对齐:dnl[--enable-sayEnablesaysupport])其中dnl是注释符号。上面代码说如果你写的扩展依赖其他扩展或者lib库,需要去掉PHP_ARG_WITH相关的代码注释。否则,取消注释PHP_ARG_ENABLE相关代码段。我们写的扩展不需要依赖其他扩展和lib库。因此,我们去掉PHP_ARG_ENABLE前面的注释。去掉注释后的代码如下:dnl如果你的扩展引用了一些外部的东西,使用with:dnlPHP_ARG_WITH(say,forsaysupport,dnlMakesurethecommentisaligned:dnl[--with-sayIncludesaysupport])dnl否则使用enable:PHP_ARG_ENABLE(say,是否启用saysupport,确保注释对齐:[--enable-sayEnablesaysupport])第三步修改say.c文件进行代码实现。实现say方法。找到PHP_FUNCTION(confirm_say_compiled),在其上方添加如下代码:PHP_FUNCTION(say){zend_string*strg;strg=strpprintf(0,"你好词");RETURN_STR(strg);}找到PHP_FE(confirm_say_compiled,在上面添加如下代码:PHP_FE(say,NULL)修改后的代码如下:constzend_function_entrysay_functions[]={PHP_FE(say,NULL)/*用于测试,稍后去掉.*/PHP_FE(confirm_say_compiled,NULL)/*用于测试,稍后去掉*/PHP_FE_END/*必须是say_functions[]中的最后一行*/};/}}}/第四步,编译安装的步骤编译后的扩展名如下:$phpize$./configure$make&&makeinstall修改php.ini文件,添加如下代码:[say]extension=say.so然后执行php-m命令,在输出内容中,你会看到say这个字。第五步调用测试,自己写一个脚本调用say方法,看看输出是否符合预期。BYKOCOR
