国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

php學(xué)習(xí)筆記之PHP擴(kuò)展開發(fā)教程

2024-05-04 21:48:29
字體:
供稿:網(wǎng)友

PHP擴(kuò)展開發(fā)不是所有開發(fā)者都會(huì)操作的一個(gè)東西,下面我來演示一個(gè)關(guān)于PHP擴(kuò)展開發(fā)實(shí)現(xiàn)過程,各位同學(xué)有需要可進(jìn)入?yún)⒖?

我們先假設(shè)需要這樣一個(gè)擴(kuò)展,提供一個(gè)叫tao_string的函數(shù),他的主要作用是返回一段字符,對(duì)應(yīng)的PHP代碼可能是這樣:

  1. function tao_string($str){ 
  2. $result = $str; 
  3. return $result

第一步,生成代碼

PHP為了擴(kuò)展開發(fā)的方便,提供了一個(gè)類似代碼生成器的工具ext_skel,具體可以參見php.net官方的說明 (https://svn.php.net/repository/php/php-src/trunk/README.EXT_SKEL).

創(chuàng)建一個(gè)文件tao.skel,它的內(nèi)容為:string tao_string(string str),就是告訴ext_skel這個(gè)東西,我們要做的擴(kuò)展里面有個(gè)函數(shù)叫tao_string,然后執(zhí)行,代碼如下:

  1. cd MooENV/src/php-5.3.8/ext/ 
  2. ./ext_skel --extname=tao --proto=tao.skel 
  3. cd tao/ 

這時(shí)候,tao這個(gè)擴(kuò)展的代碼框架就已經(jīng)出來了.

第二步,修改配置

然后修改config.m4文件將10、11、12三行最前面的dnl刪除掉,就是將如下代碼:

  1. dnl PHP_ARG_WITH(tao, for tao support, 
  2. dnl Make sure that the comment is aligned: 
  3. dnl [  --with-tao  Include tao support]) 

修改為:

  1. PHP_ARG_WITH(tao, for tao support, 
  2. Make sure that the comment is aligned: 
  3. [  --with-tao Include tao support]) 

第三步,實(shí)現(xiàn)功能

修改源碼tao.c文件,找到將tao_string這個(gè)函數(shù)修改為如下代碼:

  1. PHP_FUNCTION(tao_string) 
  2. char *str = NULL; 
  3. int argc = ZEND_NUM_ARGS(); 
  4. int str_len; 
  5. char *result; 
  6.  
  7. if (zend_parse_parameters(argc TSRMLS_CC, "s", &str, &str_len) == FAILURE)//開源代碼Vevb.com 
  8. return
  9.  
  10. str_len = spprintf(&result, 0, "wo shi %.78s", str); 
  11. RETURN_STRINGL(result, str_len, 0); 

第四步,編譯擴(kuò)展

保存后,開始編譯,代碼如下:

  1. /usr/local/php/bin/phpize 
  2. ./configure --with-php-config=/usr/local/php/bin/php-config 
  3. make 

第五步,添加擴(kuò)展

這時(shí)候,一切順利的話,該擴(kuò)展已經(jīng)在modules/tao.so這個(gè)位置了,下面就是將這個(gè)擴(kuò)展加入到PHP中去,讓我們PHP程序可以調(diào)用到,代碼如下:

  1. cp modules/tao.so /usr/local/php/ext/ 
  2. vim /usr/local/php/etc/php.ini 
  3. extension=/usr/local/php/ext/tao.so #在php.ini文件最后增加這一行 
  4. service php-fpm restart #重啟PHP服務(wù) 
  5. cp tao.php /data/www/wwwroot/default

接下來就可以訪問tao.php這個(gè)文件,測(cè)試了.

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 福鼎市| 武清区| 中江县| 家居| 新乡县| 友谊县| 荣昌县| 闵行区| 兴仁县| 伊宁市| 锡林郭勒盟| 华蓥市| 郎溪县| 额济纳旗| 高唐县| 毕节市| 弥渡县| 广丰县| 兰考县| 榆树市| 壤塘县| 调兵山市| 商洛市| 盐城市| 曲水县| 甘谷县| 宜兴市| 阳春市| 青海省| 五原县| 金湖县| 嫩江县| 正蓝旗| 靖远县| 丹巴县| 宁城县| 遂溪县| 台安县| 丰都县| 陇川县| 盐池县|