当前位置: 首页 > 后端技术 > PHP

【PHP扩展开发】ExtensionGenerator

时间:2023-03-30 03:44:02 PHP

什么是ExtensionGenerator?每个PHP扩展都包含一些非常常见且非常单调的结构和文件,这些结构和文件对所有扩展都是通用的。在开始新的扩展开发时,如果这些公共结构已经存在,那就更快乐了,而不是重复每个文件的内容,我们只需要考虑填写功能代码。扩展生成器就是实现这些功能的脚本,帮助我们完成初始化工作。PHP源代码中提供了一个内置生成器ext_skel。他在ext目录中。ext_skel是一个shell脚本,只有300多行。我们来看下关键部分代码#生成config.m4配置文件cat>config.m4<sedscriptecho"s/EXTNAME/$EXTNAME/g">>sedscriptecho'/__function_entries_here__/rfunction_entries'>>sedscriptecho'/__function_stubs_here__/rfunction_stubs'>>sedscriptecho'/__header_here__/r../../header'>>sedscriptech'/__footer_here__/r../../footer'>>sedscriptecho'/__function_entries_here__/D'>>sedscriptecho'/__function_stubs_here__/D'>>sedscriptecho'/__header_here__/D'>>sedscriptecho'/__footer_here__/D'>>sedscriptif[!-z"$no_help"];然后echo"/confirm_$extname_compiled/D">>sedscriptecho'/去掉下面的/,/^\*\//D'>>sedscriptecho's/[[:space:]]\/\*.\+\*\///'>>sedscriptecho's/^\/\*.*\*\/$//'>>sedscriptecho'/^[[:space:]]*\/\*/,/^[[:space:]]*\*\//D'>>sedscriptfised-fsedscript<$skel_dir/skeleton.c>$extname.chelp说明./ext_skel--help提示命令行格式以及我们脚本的支持参数。/ext_skel--extname=module[--proto=file][--stubs=file][--xml[=file]][--skel=dir][--full-xml][--no-help]--extname=模块扩展名,全小写标识符,只能是字母和下划线,保证在php源码的ext目录下--proto=file下的文件夹名允许开发者指定一个头文件,从而创建一系列PHP函数。表面上是基于函数库开发扩展,很少使用--stubs=file文件中只生成函数存根,生成IDE提示文件可能有用--xml生成xml文档添加到phpdoc-svn没用--skel=dirpathtotheskeletondirectory指定扩展skeleton目录,如果你想在ext目录下在别处生成,那么这个有用--full-xml为一个自包含的扩展生成xml文档(尚未实现)没用--no-help不要试图变得友善并在其中创建注释测试模块是否编译的代码和辅助函数去除生成的测试函数和注释,除非你非常熟练,否则不建议运行示例/usr/local/src/php-7.2.15/ext/ext_skel--extname=twinkle_log--skel=/usr/local/src/php-7.2.15/ext/skeleton/