乐博体育

乐博体育>新闻动态>尚途学院

教你如何自学PHP扩展

源://chixintf.com/ 小说作家:admin 搜索多少次:2126次 分享事件:2016-03-04 09:55:39 收藏:添加收藏


本篇文章以PHP7做语言的括展基础性,了解教你该怎样从零准备新建两个PHP扩充。该篇关键了解新建两个扩充的最基本步聚。举例中,各位将改变如下图所示系统:


    <?php
        echo sayWord();
    ?>


你们让下面的子程序执行工作然而为:


    $ php ./test.php
    $ hello word


想法为在括展中体现一名sayWord工艺,资源调用该sayWord工艺后,系统软件将模拟输出:hello word。下文,我将教大家该工艺的体现步奏。

从零开始创建一个php扩展



第1 步,转换成代碼


这个php为当我们能提供了比较棒的添加常规源编号的专用辅助工具ext_skel。该专用辅助工具在php源源编号的./ext文件名中间。


    $ cd php_src/ext/
    $ ./ext_skel --extname=sayWord


extname产品参数的值可以说是初始化命名。实施ext_skel操作命令后,这样一来在现如今的导航下能转化成一与初始化名那样的的导航。


第二个步,修改图片config.m4标准配置文件夹


config.m4的的作用即使搞好团结phpize方法转为configure程序资料。configure程序资料是于生活的环境论文检查的。论文检查扩张编译工作所要的生活的环境能不提供。现如今自己始于调整config.m4程序资料。

    $ cd ./sayWord
    $ vim ./config.m4


打開,config.m4文件格式后,你知道挖掘这个几段图片文字。


    dnl If your extension references something external, use with:
    dnl PHP_ARG_WITH(sayWord, for say support,
    dnl Make sure that the comment is aligned:
    dnl [  --with-sayWord
    Include sayWord support])
    dnl Otherwise use enable:
    dnl PHP_ARG_ENABLE(sayWord, whether to enable say support,
    dnl Make sure that the comment is aligned:
    dnl [  --enable-sayWord
    Enable sayWord support])


表中,dnl 是参考文献标注遗漏。底下的码说,如何你所编纂的扩充如何依赖于性一些的扩充亦或是lib库,必须 清掉PHP_ARG_WITH对应码的参考文献标注。不能,清掉 PHP_ARG_ENABLE 对应码段的参考文献标注。小编编纂的扩充不必须 依赖于性同一的扩充和lib库。故而,小编清掉PHP_ARG_ENABLE前头的参考文献标注。清掉参考文献标注后的码有以下几点:


    dnl If your extension references something external, use with:
    dnl PHP_ARG_WITH(sayWord, for sayWord support,
    dnl Make sure that the comment is aligned:
    dnl [  --with-sayWord      
        Include sayWord support])
    dnl Otherwise use enable:
    PHP_ARG_ENABLE(sayWord, whether to enable sayWord support,
    Make sure that the comment is aligned:
    [  --enable-sayWord
    Enable sayWord support])


三歩,代码是什么进行


重设sayWord.c文件名称。建立sayWord措施。

得到PHP_FUNCTION(confirm_sayWord_compiled),在其上端增多一下二维码:


    PHP_FUNCTION(sayWord)
    {
        zend_string *strg;
        strg = strpprintf(0, "hello word");
        RETURN_STR(strg);
    }


 寻找到 PHP_FE(confirm_sayWord_compiled, 在顶端添加下面源代码:


    PHP_FE(sayWord, NULL)


修改游戏后的代碼有以下:


    const zend_function_entry say_functions[] = {
        PHP_FE(sayWord, NULL)       /* For testing, remove later. */
        PHP_FE(confirm_sayWord_compiled,    NULL)       /* For testing, remove later. */
        PHP_FE_END  /* Must be the last line in sayWord_functions[] */
    };
    /* }}} */


四号步,编译布置


编译存储的工作步骤详细:


    $ phpize
    $ ./configure
    $ make && make install


修订php.ini文件名称,提高如下所示代碼:


    [sayWord]
    extension = sayWord.so


然后呢继续执行,php -m 操作命令。在模拟输出的资源中,我还见到sayWordr标志。


第二十步,取用测试图片


 自行写个php代码,资源调用sayWord方式方法。看传输的项目要不要符合要求预期想象。



网站建设首选石家庄尚途网络科技有限公司,更多网站优化,网站建设信息请关注:尚途科技,网址://chixintf.com


var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?90c4d9819bca8c9bf01e7898dd269864"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); !function(p){"use strict";!function(t){var s=window,e=document,i=p,c="".concat("https:"===e.location.protocol?"https://":"http://","sdk.51.la/js-sdk-pro.min.js"),n=e.createElement("script"),r=e.getElementsByTagName("script")[0];n.type="text/javascript",n.setAttribute("charset","UTF-8"),n.async=!0,n.src=c,n.id="LA_COLLECT",i.d=n;var o=function(){s.LA.ids.push(i)};s.LA?s.LA.ids&&o():(s.LA=p,s.LA.ids=[],o()),r.parentNode.insertBefore(n,r)}()}({id:"K9y7iMpaU8NS42Fm",ck:"K9y7iMpaU8NS42Fm"});