編寫自己的php擴(kuò)展函數(shù)php程序?qū)懙臅r(shí)間長了,自然對(duì)他所提供的功能了如指掌,他所提供的一大堆功能,真是覺得很好用,但有時(shí)候會(huì)發(fā)現(xiàn)php也缺少一些功能,自己總是會(huì)產(chǎn)生為php添加一些自定義的 " /> 亚洲精品乱,三级免费黄,久久久大

中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

編寫自己的php擴(kuò)展函數(shù)


編寫自己的php擴(kuò)展函數(shù)php程序?qū)懙臅r(shí)間長了,自然對(duì)他所提供的功能了如指掌,他所提供的一大堆功能,真是覺得很好用,但有時(shí)候會(huì)發(fā)現(xiàn)php也缺少一些功能,自己總是會(huì)產(chǎn)生為php添加一些自定義的功能的想法。久而久之,終于今天憋不住了,開始動(dòng)手研究如何添加。

  

下載一個(gè)php的源代碼包,這里使用的是php 4.0.5版,解壓后會(huì)看到php的根目錄下會(huì)有README.EXT_SKEL這樣一個(gè)文件,打開詳細(xì)閱讀了一下,發(fā)現(xiàn)了一個(gè)非常好用的工具,這個(gè)工具可以幫你構(gòu)建一個(gè)空的php擴(kuò)展,然后你向里面添加相應(yīng)的代碼就可以完成你自己的功能擴(kuò)展了。下面我們就來介紹如何使用這個(gè)工具。

  

首先轉(zhuǎn)移你的目錄到php的目錄下的ext目錄,如果你只需要一個(gè)基本的擴(kuò)展框架的話,執(zhí)行下面的命令:

./ext_skel --extname=module_name

module_name是你自己可以選擇的擴(kuò)展模塊的名字,例如我選擇的my_module。執(zhí)行工具后會(huì)自動(dòng)在ext目錄下建立你選擇的module_name名字的目錄,里面已經(jīng)生成了相關(guān)的代碼,這些代碼中只需要調(diào)整config.m4文件中的三行注釋就可以正常的編譯帶這個(gè)自定義擴(kuò)展模塊的php了。在php的根目錄執(zhí)行下列操作就可以得到。

./buildconf

./configure --enable-module_name

make

  

下面我來演示建立my_module擴(kuò)展框架的全過程,為了更有效果,我們來完成一個(gè)php的擴(kuò)展功能,在php中調(diào)用這個(gè)功能可以在web頁面中顯示hello world這個(gè)經(jīng)典單詞。

php目錄下的ext目錄中,執(zhí)行下面的命令

./ext_skel --extname=my_module

得到反饋結(jié)果:

Creating directory my_module

Creating basic files: config.m4 Makefile.in .cvsignore my_module.c php_my_module.h tests/001.phpt my_module.php [done].

  

To use your new extension, you will have to execute the following steps:

1.  $ cd ..

2.  $ vi ext/my_module/config.m4

3.  $ ./buildconf

4.  $ ./configure --[with|enable]-my_module

5.  $ make

6.  $ ./php -f ext/my_module/my_module.php

7.  $ vi ext/my_module/my_module.c

8.  $ make

  

Repeat steps 3-6 until you are satisfied with ext/my_module/config.m4 and

step 6 confirms that your module is compiled into php. Then, start writing

code and repeat the last two steps as often as necessary.

  

如果你能看懂上面的東西,那就照著去做。如果不是太明白的話,按照我下面的提示來做也可以。

Cd my_module

首先進(jìn)入my_module目錄

vi config.m4

使用文本編輯器打開config.m4文件,文件內(nèi)容大致如下:

dnl $Id$

dnl config.m4 for extension my_module

dnl don't forget to call php_EXTENSION(my_module)

  

dnl Comments in this file start with the string 'dnl'.

dnl Remove where necessary. This file will not work

dnl without editing.

  

dnl If your extension references something external, use with:

  

dnl php_ARG_WITH(my_module, for my_module support,

dnl Make sure that the comment is aligned:

dnl [  --with-my_module             Include my_module support])

  

dnl Otherwise use enable:

  

dnl php_ARG_ENABLE(my_module, whether to enable my_module support,

dnl Make sure that the comment is aligned:

dnl [  --enable-my_module           Enable my_module support])

  

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

  dnl If you will not be testing anything external, like existence of

  dnl headers, libraries or functions in them, just uncomment the

  dnl following line and you are ready to go.

  dnl Write more examples of tests here...

  php_EXTENSION(my_module, $ext_shared)

Fi

  

根據(jù)你自己的選擇將

dnl php_ARG_WITH(my_module, for my_module support,

dnl Make sure that the comment is aligned:

dnl [  --with-my_module             Include my_module support])

修改成

php_ARG_WITH(my_module, for my_module support,

Make sure that the comment is aligned:

[  --with-my_module             Include my_module support])

或者將

dnl php_ARG_ENABLE(my_module, whether to enable my_module support,

dnl Make sure that the comment is aligned:

dnl [  --enable-my_module           Enable my_module support])

修改成

php_ARG_ENABLE(my_module, whether to enable my_module support,

Make sure that the comment is aligned:

[  --enable-my_module           Enable my_module support])

  

一般我會(huì)選擇后者,然后保存退出。如果你對(duì)vi文本編輯器的操作有困難的話,請(qǐng)參考相應(yīng)的說明文章,這里就不再詳細(xì)描述了。

Vi my_module.c

將文件其中的下列代碼進(jìn)行修改

/* Every user visible function must have an entry in my_module_functions[].

*/

function_entry my_module_functions[] = {

        php_FE(say_hello,       NULL)  /* ß添加著一行代碼 */

        php_FE(confirm_my_module_compiled,      NULL) /* For testing, remove later. */

        {NULL, NULL, NULL}      /* Must be the last line in my_module_functions[] */

};

  

在文件的最后添加下列代碼

php_FUNCTION(say_hello)

{

        zend_printf("hello world/n");

}

保存文件退出

  

vi php_my_module.h

在文件中php_FUNCTION(confirm_my_module_compiled);一行前面添加下面的代碼

php_FUNCTION(say_hello);

保存文件退出

  

退回到php的根目錄下,執(zhí)行下面的命令

./buildconf

./configure --enable-my_module

make

  

如果一切順利的話,我們現(xiàn)在已經(jīng)將擴(kuò)展模塊my_module編譯到php里面了。我們編寫下面的代碼進(jìn)行測(cè)試

<?

       Say_hello();

?>

保存文件為say_hello.php

php的根目錄下運(yùn)行

./php 主站蜘蛛池模板: 毛片一级网站 | 免费亚洲成人 | 成人做爰www免费看视频网站 | 久久久精彩视频 | 最新国产精品精品视频 | 成人妇女免费播放久久久 | 国产一区二区三区四区在线观看 | jav成人av免费播放 | 男女下面一进一出网站 | 久草在线在线精品观看 | 国产乱码精品一区二区三区忘忧草 | 色网在线看 | www.久久.com| 免费看a | 黄色网一级片 | 久久亚洲春色中文字幕久久久 | 国产精品国产精品国产专区不片 | 国产最新网址 | 精品熟人一区二区三区四区 | 天堂久久久久久久 | 亚洲精品在线播放 | 久久久美女 | 免费在线观看黄色av | 啪啪免费网站 | 亚洲福利电影网 | 国产精品日本一区二区不卡视频 | 国产美女黄色 | 久久久亚洲 | 日韩欧美大片 | 在线观看视频亚洲 | 狠狠操狠狠干 | 免费观看日韩av | 国产精品乱码一区二区三区 | 精品国产一区二区三区性色av | 操操操av| 精品中文字幕一区 | 久久草视频 | 国产福利91精品 | 中文字幕在线第一页 | 欧美精品一区二区三区在线播放 | 精品1区2区 |