在上一篇扩展开发指南文章中。创建了三个用于编写扩展的基本文件。也许你会有疑问,难道PHP没有类似的自动生成项目框架的工具吗?当然有。本文开始介绍使用“php-ext-cli”工具生成扩展工程文件。注意这里的“php-ext-cli”没有这个东西。这是我给PHP起的别名。这个工具就是php-src/ext/ext_skel还是一头雾水?这不是废话。顺便给只能假装咄咄逼人(function)的司机加一个功能(function)去下载(leadthecar)。我使用的是php5.6.30版本。不用担心版本。当然不要直接用php7.x版本的https://github。com/php-src/phphttp://php.net/downloads.php解压(开门)tarzxfphp-5.6.30.tar.gz进入ext(board)cdphp-src/ext/ext目录内容目录车内(车内豪华装修)有很多文件夹和文件暂时需要关注:ext_skel、其他扩展文件夹等。ext_skel使用./ext_skel?ext[PHP-5.6.30]?./ext_skel./ext_skel--extname=module[--proto=file][--stubs=file][--xml[=file]][--skel=dir][--full-xml][--no-help]--extname=module模块是你的扩展名--proto=file文件包含要创建的函数原型--stubs=filegenerate只有文件中的函数存根--xml生成要添加到phpdoc-svn的xml文档--skel=dir框架目录的路径--full-xml为自包含扩展生成xml文档(尚未实现)--no-help不要试图在代码和辅助函数中创建注释来测试模块是否编译,只关心--extname参数。/ext_skel--extname=laosiji最简单的理解是生成一个laosiji扩展项目对比后,执行./ext_skel--extname=laosiji,然后在ext目录下生成一个laosiji的目录,可以查看。是的,ext_skel暂时没有问题。至于其他参数,自行学习。发现还有这三个文件。至于文件的内容。那肯定和我上次写的文件内容不一样。不然我不是神吗?作为解释,将我们自己编写的三个文件与自动生成的文件进行比较。不多不少,不多不多,不管是关键点,区别是没有的,但是一样的(宏,宏,宏)我们也可以生成自己写的扩展,也可以生效。所以,不要质疑自己。下面的工程结构主要是自己写的,也就是说不会用到ext_skel。其实都是一样的,区别就是废话少了,上面只是简单介绍了ext_skel函数定义的使用//函数定义ZEND_FUNCTION(老寺记_hello){php_printf("hellolaosiji!\n");}语句ZEND_FUNCTION(老四记_你好);使用//functionsentryfunctionmodulestaticzend_function_entrylaosiji_functions[]={ZEND_FE(laosiji_hello,NULL)//declare{NULL,NULL,NULL}//固定的写就好了};//moduleentryzend_module_entrylaosiji_module_entry={//...laosiji_functions,/*函数加载函数模块*///...};@Functionalias因为是别名,所以没有定义声明。Just...staticzend_function_entrylaosiji_functions[]={ZEND_FE(laosiji_hello,NULL)//声明ZEND_NAMED_FE(laosiji_hi,ZEND_FN(laosiji_hello),NULL)//函数别名ZEND_NAMED_FEZEND_FALIAS(laosiji_hehe,laosiji_hello,NULL)//函数别名ZEND_FALIAS{NULL,NULL,NULL}//fixed随便写吧};测试=20010901STANDARD_MODULE_HEADER,#endifPHP_LAOSIJI_EXTNAME,/*扩展名*/laosiji_functions,/*函数加载函数模块*/NULL,*//NULL,/*RINIT*/NULL,/*rshutdown*/null,/*minfo*/#如果zend_module_api_no>=20010901php_laosiji_version,/*扩展扩展/#endifstandard_module_properties}"hellolaosiji!\n");}参考函数:https://github.com/imlaosiji/...函数别名:https://github.com/imlaosiji/...结束目前看来这个驱动进化多了一点,有点能干(function),会自己隐藏(function别名)。但这还不够,参数?返回值?别紧张
