首頁 > 後端開發 > php教程 > PHP擴充開發01:第一個擴充

PHP擴充開發01:第一個擴充

WBOY
發布: 2016-07-29 08:58:55
原創
1013 人瀏覽過

我們先假設業務場景,是需要有這麼一個擴展,提供一個叫ccvita_string的函數,他的主要作用是回傳一段字元。 (這個業務場景實在太假,大家就這麼看看吧)對應的PHP代碼可能是這樣:

<span>function</span> ccvita_string(<span>$str</span><span>){
     </span><span>$result</span> = '<a href="'.<span>$str</span>.'">Link</a>'<span>;
     </span><span>return</span><span>$result</span><span>;
}</span>
登入後複製

第一步,生成代碼
PHP為了擴展開發的方便,提供了一個類似代碼生成器的工具ext_skel,具體可以參考說明。
首先我們創建一個檔案ccvita.skel,它的內容為

<span>string</span> ccvita_string(<span>string</span> str)
登入後複製

就是告訴ext_skel這個東西,我們要做的擴充裡面有個函數叫ccvita_string。然後執行

cd MooENV/src/php-<span>5.3</span>.<span>8</span>/ext/<span>.</span>/ext_skel --extname=ccvita --proto=<span>ccvita.skel
cd ccvita</span>/
登入後複製

這時候,ccvita這個擴充的程式碼框架就已經出來了。

第二步,修改配置
然後修改config.m4檔案將10、11、12三行最前面的dnl刪除掉,就是將

dnl PHP_ARG_WITH(ccvita, for ccvita support,<span>dnl Make sure that the comment is aligned:
dnl </span><span>[</span><span>  --with-ccvita             Include ccvita support</span><span>]</span>)
登入後複製

修改為

PHP_ARG_WITH(ccvita, for ccvita support,<span>Make sure that the comment is aligned:
</span><span>[</span><span>  --with-ccvita             Include ccvita support</span><span>]</span>)
登入後複製



修改原始碼ccvita.c檔

找到將ccvita_string這個函式修改為

<span>PHP_FUNCTION(ccvita_string)
{
    </span><span>char</span> *str =<span> NULL;
    </span><span>int</span> argc =<span> ZEND_NUM_ARGS();
    </span><span>int</span><span> str_len;
    </span><span>char</span> *<span>result;
 
    </span><span>if</span> (zend_parse_parameters(argc TSRMLS_CC, <span>"</span><span>s</span><span>"</span>, &str, &str_len) ==<span> FAILURE) 
        </span><span>return</span><span>;
 
    str_len </span>= spprintf(&result, <span>0</span>, <span>"</span><span><a href=\"%.78s\">Link</a></span><span>"</span><span>, str);
    RETURN_STRINGL(result, str_len, </span><span>0</span><span>); 
}</span>
登入後複製

第四步,編譯擴充

儲存後,開始編譯

/usr/local/php/bin/<span>phpize
.</span>/configure --with-php-c/local/php/bin/php-<span>config
</span><span>make</span>
登入後複製

,該擴展已經在modules/ccvita.so這個位置了。下面就是將這個擴充加入PHP中去,讓我們PHP程式可以呼叫。

<span>cp</span> modules/ccvita.so /usr/local/php/ext/<span>vim </span>/usr/local/php/etc/<span>php.ini
extension</span>=/usr/local/php/ext/<span>ccvita.so #在php.ini文件最后增加这一行
service php</span>-<span>fpm restart #重启PHP服务
</span><span>cp</span> ccvita.php /data/www/wwwroot/default/
登入後複製

相關程式碼,可以在我的github上clone出來,位址:https://github.com/KimiChen/PHP-EXT接下來就可以存取ccvita.php這個文件,測試擴充了。下一篇,將會涉及一些更深入的內容。

轉自部落格(http://www.ccvita.com/496.html)

以上就介紹了PHP擴展開發01:第一個擴展,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板