【php扩展开发】扩展生成器
什么是扩展生成器
每个PHP的扩展都包含一些非常公共的并且非常单调的结构和文件,这些文件对所有扩展来说都是通用的。当开始一个新扩展开发的时候,如果这些公共的结构已经存在,而不需要费力去复制每个文件的内容,我们只需考虑填充功能代码那心情一定会愉快很多。
扩展生成器就是实现这些功能的脚本,帮助我们完成初始化工作.PHP源码中提供一个自带的生成器ext_skel。他在ext目录下。
ext_skel
它是一个shell脚本,仅有300多行。我们来看下关键部分代码
#生成config.m4配置文件 cat> config.m4 << eof dnl $ Id $ dnl config.m4 用于扩展名$ extname dnl 此文件中的注释以字符串'dnl'开头。 DNL删除其中必要的。此文件无效 dnl没有编辑。 dnl如果你的扩展引用了外部的东西,请使用: DNL PHP_ARG_WITH($ extname,为 $ extname支持, dnl确保注释已对齐: dnl [--with- $ extname 包括$ extname support]) dnl否则使用enable: PHP_ARG_ENABLE($ extname,是否启用 $ extname支持, dnl确保注释已对齐: [--enable- $ extname 启用$ extname支持]) .....省略一大串 EOF #生成核心文件 $ ECHO_N “ $ extname .c $ ECHO_C ” echo “s / extname / $ extname / g” > sedscript echo “s / EXTNAME / $ EXTNAME / g” >> sedscript echo '/ __ function_entries_here __ / r function_entries' >> sedscript echo ' / __ function_stubs_here __ / r function_stubs' >> sedscript echo '/ __ header_here __ / r ../../header' >> sedscript echo '/ __ footer_here __ / r ../../footer' >> sedscript echo '/ __ function_entries_here __ / D' >> sedscript echo '/ __ function_stubs_here __ / D' >> sedscript echo '/ __ header_here __ / D' >> sedscript echo '/ __ footer_here __ / D' >> sedscript if [!-z “ $ no_help ” ]; 然后 回显 “/ confirm_ $ extname_compiled / D” >> sedscript echo '/删除以下/,/ ^ * // D' >> sedscript echo 's / [[:space:]] / *。 + * ///' >> sedscript echo 的/^/*.**/$//' >> sedscript echo '/ ^ [[:space:]] * / * / ,/ ^ [[:space:]] * * // D' >> sed -f sedscript < $ skel_dir /skeleton.c> $ extname .c
帮助说明
./ext_skel --help
它提示了我们脚本的命令行格式和支持的参数
./ext_skel --extname = module [--proto = file] [--stubs = file] [--xml [= file]] [--skel = dir] [--full-xml] [ - no-help] --extname = module 扩展名称,全为小写字母的标识符,仅包含字母和下划线,保证在php源码ext目录下的文件夹名唯一 --proto = file允许开发人员指定一个头文件,由此创建一系列PHP函数,表面上看就是要开发基于一个函数库的扩展,很少用 --stubs = file仅生成文件中的函数存根,生成IDE提示文件可能有用 --xml 生成要添加到phpdoc-svn没用的xml文档 --skel = dir路径到骨架目录指定扩展骨架目录,如果你想在ext目录以外的地方生成,那这个有用 --full-XML 生成 XML文档用于自包含的延伸部(未尚未实现)没用 --no的帮助不尝试是好的,并创建代码中的注释和辅助功能测试,如果该模块编译去除生成测试函数和注释等内容,除非你很熟练,不建议操作
示例
/ usr / local / src / php- 7.2。15 / ext / ext_skel --extname = twinkle_log --skel = / usr / local / src / php- 7.2。15 /分机/骨架/
免责申明:
1. 本站所有教程、文章分享目的仅供大家学习和交流,资源连接来自于网络,非本站发布,本站也不存储任何资源!
2. 如有无法查看或链接失效,烦请报告联系管理员处理!
3. 本站无法保证资源质量及其时效性,恕不接受任何提问。
4.本站即不保存任何资源,也不对任何链接作品负责,希望大家赞助本站,费用仅维持本站的日常运营所需!
5. 百码云无法保证文章教程或资源的完善与安全,请自行检测解决。
6. 通过本站收集链接的相关资源,严禁杜绝任何形式的正式商业用途,请前往官方购买。
7. 但凡通过本站链接导航下载的任何作品,虽不归本站所有,但在研究学习的前提下,请务必在下载24小时后删除。
百码云资源站仅提供学习的平台,所有资料均来自于网络,版权归原创者所有!本站不提供任何保证,并不承担任何法律责任,如果对您的版权或者利益造成损害,请提供相应的资质证明,我们将于3个工作日内予以删除。本文章采用BY-NC-SA 4.0 《国际知识共享署名许可协议4.0》 进行许可 。
百码云 » 【php扩展开发】扩展生成器
1. 本站所有教程、文章分享目的仅供大家学习和交流,资源连接来自于网络,非本站发布,本站也不存储任何资源!
2. 如有无法查看或链接失效,烦请报告联系管理员处理!
3. 本站无法保证资源质量及其时效性,恕不接受任何提问。
4.本站即不保存任何资源,也不对任何链接作品负责,希望大家赞助本站,费用仅维持本站的日常运营所需!
5. 百码云无法保证文章教程或资源的完善与安全,请自行检测解决。
6. 通过本站收集链接的相关资源,严禁杜绝任何形式的正式商业用途,请前往官方购买。
7. 但凡通过本站链接导航下载的任何作品,虽不归本站所有,但在研究学习的前提下,请务必在下载24小时后删除。
百码云资源站仅提供学习的平台,所有资料均来自于网络,版权归原创者所有!本站不提供任何保证,并不承担任何法律责任,如果对您的版权或者利益造成损害,请提供相应的资质证明,我们将于3个工作日内予以删除。本文章采用BY-NC-SA 4.0 《国际知识共享署名许可协议4.0》 进行许可 。
百码云 » 【php扩展开发】扩展生成器