成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

從零開始創(chuàng)建一個(gè) PHP 擴(kuò)展

yearsj / 3490人閱讀

摘要:創(chuàng)建一個(gè)擴(kuò)展的基本步驟都有哪些。執(zhí)行命令后,這樣在當(dāng)前目錄下會(huì)生成一個(gè)與擴(kuò)展名一樣的目錄。文件是用于環(huán)境檢測的。檢測擴(kuò)展編譯運(yùn)行所需的環(huán)境是否滿足。其中,是注釋符號(hào)。去掉注釋后的代碼如下第三步,代碼實(shí)現(xiàn)修改文件。

創(chuàng)建一個(gè)擴(kuò)展的基本步驟都有哪些。示例中,我們將實(shí)現(xiàn)如下功能:

echo say();
?>

輸出內(nèi)容:

$ php ./test.php
$ hello word

在擴(kuò)展中實(shí)現(xiàn)一個(gè)say方法,調(diào)用say方法后,輸出 hello word。

第一步:生成代碼

PHP為我們提供了生成基本代碼的工具 ext_skel。這個(gè)工具在PHP源代碼的./ext目錄下。

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

extname參數(shù)的值就是擴(kuò)展名稱。執(zhí)行ext_skel命令后,這樣在當(dāng)前目錄下會(huì)生成一個(gè)與擴(kuò)展名一樣的目錄。

第二步,修改config.m4配置文件

config.m4的作用就是配合phpize工具生成configure文件。configure文件是用于環(huán)境檢測的。檢測擴(kuò)展編譯運(yùn)行所需的環(huán)境是否滿足。現(xiàn)在我們開始修改config.m4文件。

$ cd ./say
$ vim ./config.m4

打開,config.m4文件后,你會(huì)發(fā)現(xiàn)這樣一段文字。

dnl If your extension references something external, use with:

dnl PHP_ARG_WITH(say, for say support,
dnl Make sure that the comment is aligned:
dnl [ --with-say Include say support])

dnl Otherwise use enable:

dnl PHP_ARG_ENABLE(say, whether to enable say support,
dnl Make sure that the comment is aligned:
dnl [ --enable-say Enable say support])

其中,dnl 是注釋符號(hào)。上面的代碼說,如果你所編寫的擴(kuò)展如果依賴其它的擴(kuò)展或者lib庫,需要去掉PHP_ARG_WITH相關(guān)代碼的注釋。否則,去掉 PHP_ARG_ENABLE 相關(guān)代碼段的注釋。我們編寫的擴(kuò)展不需要依賴其他的擴(kuò)展和lib庫。因此,我們?nèi)サ鬚HP_ARG_ENABLE前面的注釋。去掉注釋后的代碼如下:

dnl If your extension references something external, use with:

dnl PHP_ARG_WITH(say, for say support,
dnl Make sure that the comment is aligned:
dnl [ --with-say Include say support])

dnl Otherwise use enable:

PHP_ARG_ENABLE(say, whether to enable say support,
Make sure that the comment is aligned:
[ --enable-say Enable say support])

第三步,代碼實(shí)現(xiàn)

修改say.c文件。實(shí)現(xiàn)say方法。
找到PHP_FUNCTION(confirm_say_compiled),在其上面增加如下代碼:

PHP_FUNCTION(say)
{

    zend_string *strg;
    strg = strpprintf(0, "hello word");
    RETURN_STR(strg);

}

找到 PHP_FE(confirm_say_compiled, 在上面增加如下代碼:

PHP_FE(say, NULL)

修改后的代碼如下:

const zend_function_entry say_functions[] = {

 PHP_FE(say, NULL)       /* For testing, remove later. */
 PHP_FE(confirm_say_compiled,    NULL)       /* For testing, remove later. */
 PHP_FE_END  /* Must be the last line in say_functions[] */

};
/ }}} /

第四步,編譯安裝

編譯擴(kuò)展的步驟如下:

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

修改php.ini文件,增加如下代碼:

[say]
extension = say.so

然后執(zhí)行,php -m 命令。在輸出的內(nèi)容中,你會(huì)看到say字樣。

第五步,調(diào)用測試

自己寫一個(gè)腳本,調(diào)用say方法。看輸出的內(nèi)容是否符合預(yù)期。

BY KOCOR

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/29322.html

相關(guān)文章

  • 從零開始PHP 擴(kuò)展(一)

    摘要:對(duì)于每個(gè)來說,都有著內(nèi)心的一種希望寫擴(kuò)展的沖動(dòng)了吧。然而,缺乏一個(gè)很好的切入點(diǎn)。生成了擴(kuò)展之后,我們會(huì)看到四個(gè)文件和一個(gè)文件夾。雖然大寫的有宏定義,但是為什么會(huì)報(bào)錯(cuò),我也不太清楚了。這個(gè)宏最終會(huì)被翻譯成一個(gè)函數(shù)。 PHP 是用 C 語言寫的。對(duì)于每個(gè) PHPer 來說,都有著內(nèi)心的一種希望寫擴(kuò)展的沖動(dòng)了吧。然而,缺乏一個(gè)很好的切入點(diǎn)。Google 上搜 PHP 擴(kuò)展開發(fā),大部分都是復(fù)制...

    shiina 評(píng)論0 收藏0
  • 1. Laravel的初始化安裝 - Laravel從零開始教程

    摘要:要學(xué)習(xí)那么第一步就是要在我們的開發(fā)機(jī)上安裝并運(yùn)行,首先我們會(huì)先安裝再使用框架提供的安裝小工具,通過使用就能生成我們的工程了。在的官方網(wǎng)站上的文檔中已經(jīng)很詳細(xì)的介紹了如何安裝不過文檔可能講解的并不是那么的細(xì)致。從零開始學(xué)系列目錄地址 要學(xué)習(xí)Laravel,那么第一步就是要在我們的開發(fā)機(jī)上安裝并運(yùn)行Laravel,首先我們會(huì)先安裝composer,再使用laravel框架提供的安裝小工具,...

    baukh789 評(píng)論0 收藏0
  • php】Mac下從零搭建和配置 php+nginx+mysql 環(huán)境

    摘要:既然是從零開始,那么就把作為統(tǒng)一的安裝工具。下面附上安裝方法安裝好之后,就可以開始搭建環(huán)境了。環(huán)境安裝比較簡單安裝好之后,首先要啟動(dòng)服務(wù)。和一起安裝,我們先去安裝,再做相關(guān)配置。成功解析還差一步,就是修改配置文件。 既然是從零開始,那么就把 homebrew 作為統(tǒng)一的安裝工具。如果你不知道 homebrew 是什么東東,移步這里。下面附上 homebrew 安裝方法: /usr/bi...

    QiShare 評(píng)論0 收藏0
  • php】Mac下從零搭建和配置 php+nginx+mysql 環(huán)境

    摘要:既然是從零開始,那么就把作為統(tǒng)一的安裝工具。下面附上安裝方法安裝好之后,就可以開始搭建環(huán)境了。環(huán)境安裝比較簡單安裝好之后,首先要啟動(dòng)服務(wù)。和一起安裝,我們先去安裝,再做相關(guān)配置。成功解析還差一步,就是修改配置文件。 既然是從零開始,那么就把 homebrew 作為統(tǒng)一的安裝工具。如果你不知道 homebrew 是什么東東,移步這里。下面附上 homebrew 安裝方法: /usr/bi...

    yzzz 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<