摘要:擴展開發第一個擴展擴展開發安裝定時器在上一篇文章擴展開發安裝我們已經將開發擴展的環境安裝成功,那么接下來采用最簡單直接的方式創建第一個擴展。
PHP擴展開發:第一個擴展
《PHP擴展開發:安裝PHP》
《POSIX定時器:timer_settime() 》
在上一篇文章《PHP擴展開發:安裝PHP》我們已經將開發PHP擴展的PHP環境安裝成功,那么接下來采用最簡單直接的方式創建第一個擴展。
我們先假設業務場景,是需要有這么一個擴展,提供一個叫ccvita_string的函數,他的主要作用是返回一段字符。(這個業務場景實在太假,大家就這么看看吧)對應的PHP代碼可能是這樣:
function ccvita_string($str){
$result = "Link"; return $result;
}
第一步,生成代碼
PHP為了擴展開發的方便,提供了一個類似代碼生成器的工具ext_skel,具體可以參見說明。
首先我們創建一個文件ccvita.skel,它的內容為
string ccvita_string(string str)
就是告訴ext_skel這個東西,我們要做的擴展里面有個函數叫ccvita_string。然后執行
cd MooENV/src/php-5.3.8/ext/
./ext_skel --extname=ccvita --proto=ccvita.skel
cd ccvita/
這時候,ccvita這個擴展的代碼框架就已經出來了。
第二步,修改配置
然后修改config.m4文件將10、11、12三行最前面的dnl刪除掉,就是將
dnl PHP_ARG_WITH(ccvita, for ccvita support,
dnl Make sure that the comment is aligned:
dnl [ --with-ccvita Include ccvita support])
修改為
PHP_ARG_WITH(ccvita, for ccvita support,
Make sure that the comment is aligned:
[ --with-ccvita Include ccvita support])
第三步,實現功能
修改源碼ccvita.c文件
找到將ccvita_string這個函數修改為
PHP_FUNCTION(ccvita_string)
{
char *str = NULL; int argc = ZEND_NUM_ARGS(); int str_len; char *result; if (zend_parse_parameters(argc TSRMLS_CC, "s", &str, &str_len) == FAILURE) return; str_len = spprintf(&result, 0, "Link", str); RETURN_STRINGL(result, str_len, 0);
}
第四步,編譯擴展
保存后,開始編譯
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
第五步,添加擴展
這時候,一切順利的話,該擴展已經在modules/ccvita.so這個位置了。下面就是將這個擴展加入到PHP中去,讓我們PHP程序可以調用到。
cp modules/ccvita.so /usr/local/php/ext/
vim /usr/local/php/etc/php.ini
extension=/usr/local/php/ext/ccvita.so #在php.ini文件最后增加這一行
service php-fpm restart #重啟PHP服務
cp ccvita.php /data/www/wwwroot/default/
接下來就可以訪問ccvita.php這個文件,測試擴展了。下一篇,將會涉及一些更深入的內容。
相關代碼,可以在我的github上clone出來,地址:https://github.com/KimiChen/P...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31963.html
摘要:二下載第一個擴展第一個擴展的源碼已經在上準備好了,直接用命令克隆,或者手工下載都可以。第四步確認擴展已經安裝成功使用命令可以查看目前已經安裝的所有擴展。 PHP擴展是高級PHP程序員必須了解的技能之一,對于一個初入門的PHP擴展開發者,怎么才能開發一個成熟的擴展,進入PHP開發的高級領域呢?本系列開發教程將手把手帶您從入門進入高級階段。本教程系列在linux下面開發(推薦使用cento...
摘要:例如,這里要創建一個名為的擴展現在,在目錄下出現了一個新建的擴展目錄這時,該擴展是無法編譯通過的,需要先編輯文件才行。 首先需要確定系統中安裝了gcc編譯器,合適版本的bison等,下面是從源碼編譯安裝PHP需要執行的基本命令: # cd php-src # ./buildconf # ./configure --enable-debug --enable-maintainer-zts...
摘要:這里看到,表明你的擴展已經加載成功了,現在就可以調用這個擴展函數了。是不是很簡單更多上面的例子還比較簡單,只是編寫了一個擴展函數。 PHP-X是我在2017年年初創建的一個新項目。這個項目的目標就是讓有一定工作經驗的PHP程序都能夠具備擴展開發的能力。 0x00 初衷 從2012年開始編寫swoole,現在算來已經有5個年頭了。我發現編寫一個 PHP 擴展這個工作非常艱難。PHP 程序...
摘要:簡介通過擴展,我們可以在代碼中使用一些特定的方法大部分的擴展都是用寫的。這個目錄與我們的擴展同名。我們先來在擴展中創建一個類,使用此類來渲染。接下來命令行執行以下命令來編譯擴展第一次運行以上命令時,會初始化一些東西。 showImg(https://segmentfault.com/img/remote/1460000018698586); 簡介: 通過 PHP 擴展, 我們可以在 p...
摘要:引言作為由騰訊公司開源的優秀框架與服務部署運維解決方案,被閱文集團引入了實際實踐中,同時閱文集團對在語言層面進行了能力的補全,令如虎添翼。作為騰訊公司的優秀框架與服務部署運維解決方案,可以滿足上述的所有需求。 梁晨(Ted),任職閱文集團技術中心,負責起點中文網的WEB后臺開發工作。曾負責騰訊上海企業產品部營銷QQWeb后臺開發、QQ公眾號Web后臺開發,對大型網站技術架構,有自己的經...
閱讀 3683·2021-08-10 09:42
閱讀 584·2019-08-30 15:55
閱讀 880·2019-08-30 15:54
閱讀 3103·2019-08-30 13:45
閱讀 549·2019-08-29 16:23
閱讀 1986·2019-08-29 16:23
閱讀 975·2019-08-29 15:18
閱讀 2255·2019-08-29 12:57