Linux下編寫一個PHP擴充套件

訢亮發表於2019-02-26

假設需求

開發一個叫做 helloWord 的擴充套件。

擴充套件裡有一個函式,helloWord()。

echo helloWord(`Tom`);
//返回:Hello World: Tom複製程式碼

本地環境

PHP版本:5.6.9

系統:Linux CentOS release 6.5 (Final)

最終效果

Linux下編寫一個PHP擴充套件

實現流程

第一步:

進入到本地的php目錄執行:

cd /root/soft/src/php-5.6.9
cd ext
./ext_skel --extname=helloWord
cd helloWord
vi config.m4

搜尋:dnl Otherwise use enable 將下面修改成:

PHP_ARG_ENABLE(helloWorld, whether to enable helloWorld support,
[  --enable-helloWorld           Enable helloWorld support])

if test "$PHP_HELLOWORLD" != "no"; then

...複製程式碼

如圖:

Linux下編寫一個PHP擴充套件

第二步:

vi php_helloWorld.h

搜尋:extern zend_module_entry 新增一行:

PHP_FUNCTION(helloWorld);複製程式碼

如圖:

Linux下編寫一個PHP擴充套件

第三步:

vi helloWorld.c

搜尋:const zend_function_entry helloWorld_functions[] 新增一行:

PHP_FE(helloWorld, NULL)複製程式碼

如圖:

Linux下編寫一個PHP擴充套件

搜尋:PHP_MINFO_FUNCTION(helloWorld) 

新增版本、作者資訊

php_info_print_table_row(2, "Version", "1.0");
php_info_print_table_row(2, "Author", "BiHu");複製程式碼

如圖:

Linux下編寫一個PHP擴充套件

在 helloWorld.c 底部新增一個方法

PHP_FUNCTION(helloWorld)
{
    char *arg = NULL;
    int arg_len, len;
    char *strg;
    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) {
        return;
    }
    len = spprintf(&strg, 0, "Hello World: %s", arg);
    RETURN_STRINGL(strg, len, 0);
}複製程式碼

如圖:

Linux下編寫一個PHP擴充套件

第四步:

//編譯安裝
cd /root/soft/src/php-5.6.9/ext
/usr/local/php/bin/phpize #用phpize生成configure配置檔案
./configure --with-php-config=/usr/local/php/bin/php-config   #配置
make  #編譯
make install  #安裝複製程式碼

第五步:

//修改php.ini
extension="helloWorld.so"   #名稱為安裝擴充套件的名稱複製程式碼

第六步:

重啟環境。

完成上面的步驟,簡單的 helloWorld 擴充套件就OK了。

大家可以根據自己的需求,開發滿足自己的擴充套件。

比如,可以開發一些擴充套件類,擴充套件方法,等等。

如果大家需要helloWorld擴充套件包,可以關注微信公眾號。

回覆 “helloWorld” 即可。

Thanks ~


作者:PHP後端開發者

提供技術相關服務(自己懂的知識)。

QQ群:564557094。

關注微信公眾號,留言即可,看到留言後會及時回覆。

Linux下編寫一個PHP擴充套件
IT小圈兒

相關文章