導航:首頁 > 編程語言 > php擴展開發中文教程

php擴展開發中文教程

發布時間:2022-05-20 15:31:39

A. php開發怎麼學習PHP學習有沒有什麼方法

一、學前准備

1、建議首先要對網站有個整體的認識,對做網站需要學習的知識要有個認識,從而確定自己的學習方向,不要學一半,又覺得自己似乎不適合學這個,而半途改道,這樣很浪費時間,也不是學技術的人該有的心態。

2、PHP是什麼網上有很多資料這里不多說了,自己一定要好好看看。由於它是開源的可以從一些網站上下載很多源碼,甚至整站源碼。但是如果你想要學的好的話,很多東西東西都是自己設計,而不是二次開發。

3、強調一下php並不是想網上一些人說的那樣簡單,它只是語法簡單,深入還是要努力。

二、學習順序

(1)熟悉HTML/CSS/JS等網頁基本元素

(2)理解動態語言的概念,運做機制,熟悉PHP語法

(3)學習如何將PHP與HTML結合起來完成簡單動態頁面

(4)接觸MYSQL,開始設計資料庫程序,學會基本對資料庫的操作

(5)學會一個模版(建議是smarty),會話控制session和cookie,ajax

(6)繼續深入學會怎麼設計一個優秀的資料庫

三、學習方法總結

1,學習資料:一本好的書籍+配套的視頻+幾個常用的網站

2,開發工具:記事本,eclipse,ZendStudio 。

學習階段可以使用記事本,但是它的開發效率低,開發的時候要用到其他開發工具,eclipse,Zend

Studio是兩款最常用的工具。Eclipse是完全免費的產品,Zend

Studio(是一款集成開發軟體)是收費,但是它的破解方法很簡單。當然還有其他的開發軟體,自己可以挑選一個適合自己的。

3, 剛開始學習的時候基本上都會要學習lamp或者是wamp的環境的搭建,搭建環境的過程不是很多,但是可能會遇到很多問題(也可能你運氣好一次搭建好),千萬不要灰心,一定會解決的。

4, 在學習php的前期雖然用不到那麼多資料庫的知識,但是懂得怎麼使用它是很有必要的。等你可以開發網站後,設計一個好的資料庫就會成為一個成功的網站關鍵。

5,在學習的過程中還要准備各種開發手冊,php手冊,mysql手冊,以及一些框架的手冊。

6,php是一種後台語言,但是在學習後台之前還需要學習前台語言,DIV+CSS,HTML,javaScript,以及實現非同步傳輸的ajax。

7,學習ajax基本上是必須,但是學習它之前最好學習了javascript和xml,這樣才能從本質上了解原理。

8,有很多軟體專門用來管理和設計資料庫,這個很方便但是你一定要懂得sql語言,才能更好的設計資料庫,以及在php中用對資料庫進行相關的操作。

9,eclipse默認是不能開發php的,需要你對它進行擴展。擴展後要安裝Xdebugger或者是Zend_Debugger,安裝以後才能進行調試,調試和java調試基本一樣。

10,在學習php的過程中一定會遇到很多問題,你一定會去查找各種資料或者是別人,但是很有可能你下次遇到還是不懂,所以這就需要你要把遇到過的問題和解決方法記錄下來。

學習IT類,不論是哪一類不能僅靠理論知識,實戰和項目(也就是多練習)是重點!

B. 想自學PHP哪裡有免費的PHP教程

php中文網,w3cschool,慕課網,騰訊課堂等等 淘寶上也有很多視頻教程,很便宜

C. windows下開發並編譯PHP擴展的方法

現在就簡單說一在WINDOWS下開發PHP擴展的步驟:
首先需要准備的軟體有:
cygwin
安裝路徑e:\app\cygwin
visual
studio
C++
6.0,
修改環境變數,把已經安裝好的PHP路徑設置為環境變數。在這里,假設我的PHP安裝目錄是:e:\app\php5.2.5,那麼我把WINDOWS環境變數後面加上這個安裝目錄。方便一會兒使用php.exe。
PHP源代碼,這里假設為e:\c_source_code\php-5.2.5
1、修改文件
「PHP源文件目錄/ext/ext_skel_win32.php」,在這里就是:E:\c_source_code\php-5.2.5\ext,其中主要是修改其中的cygwin路徑。$cygwin_path
=
'e:\app\cygwin\bin';
把$cygwin_path修改為你實際安裝cygwin的路徑。
2、在源代碼ext目錄也就是e:\c_source_code\php-5.2.5\ext下,執行
php
ext_skel_win32.php
--extname=<EXT_NAME>,此時會在ext目錄下生成<EXT_NAME>目錄,這個目錄就是我們將要進行PHP擴展開發的框架。比如你運行php.exe
ext_skel_win32.php
--extname=foo,會在ext目錄下生成foo目錄。
3、將php-root\dev\php5ts.lib拷貝至
「ext/<EXT_NAME>」中。比如你要開發的PHP擴展名為foo,那麼就需要把php-root\dev\php5ts.lib拷貝到PHP源文件目錄\ext\foo中。
4、修改foo.c內容,編寫我們需要的C代碼。
5、進入<EXT_NAME>目錄,打開<EXT_NAME>.dsp。
設置VC6工程,
設置菜單「組建」->「移除工程配置」,選中「Win
32
Release_TS」,
設置菜單「工程」,選中「Win
32
Release_TS」
打開Tab「連接」,設置「輸出文件名」中的目錄,
[可選]打開Tab「C/C++」,增加「預處理器定義」「,COMPILE_DL_<EXT_NAME>」(注意全大寫,默認加入的),取消預定義「LIBZEND_EXPORTS」(否則不可引入zend函數)。
6、設置好以後,進行編譯,會生成一個dll文件,文件名是<EXT_NAME>.dll,比如在我們的例子中就為foo.dll
把foo.dll拷到e:\app\ext目錄下,並在php.ini里加上一行extension=foo.dll,重啟一下apache,查看phpinfo();,會發現我們的PHP擴展foo()已經載入進來,已經可以使用這個foo擴展了。

D. PHP安裝以及教程

tomcat ?
據說tomcat配PHP效果不是很好..還是換apache吧....
apache嗎..反正幾乎是一路next就可以裝好了..不過你如果裝了IIS..就要注意埠問題..可能會有沖突..mysql也是.一路next,php嗎..我是這么樣的..
1.下載下來的php包解壓..文件夾最好直接命名成php.
2.將php.ini-recommended改名為php.ini(這個是php的配置文件).放到c:\windows下(不放這里好像會有問題)
3.php.ini設置:extension_dir = "c:\php\ext"設置成你的ext文件夾的目錄,去掉extension=php_mysql.dll前面的分號(載入mysql擴展).需要什麼擴展可以根據需要修改.
4.apache的設置:apache安裝目錄下的conf文件夾下.找到httpd.conf,DocumentRoot "d:/wwwroot"
這里是你的網站的目錄,
在最後添加
LoadMole php5_mole "c:/php/php5apache2_2.dll"(載入php模塊)
AddType application/x-httpd-php .php (可解析的php擴展名)
AddType application/x-httpd-php-source .phps (這個不記得了.反正肯定要的)

如果發現許可權不夠.找到這里
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
allow from all
options indexes
</Directory>
原來是deny from all改成allow from all.
最好打開apache的目錄顯示.
Options Indexes FollowSymLinks去掉前面的#,如果還不可以.就在上面的allow from all下面加上options indexes就OK了.
這是win下面的apache+php的配置..
mysql安裝比較簡單..我就不說了...
PHP的電子教程網上非常多..在這里也不可能給你貼出來吧..
還有關於框架..框架網上的教程也很多..網路一下吧..
著名的框架有zend Framework,cakephp,國產的fleaphp,thinkphp等等...

E. 如何用C語言編寫PHP擴展的詳解

1:預定義
在home目錄,也可以其他任意目錄,寫一個文件,例如caleng_mole.def
內容是你希望定義的函數名以及參數:
int a(int x,int y)
string b(string str,int n)

2:到php源碼目錄的ext目錄
#cd /usr/local/php-5.4.0/ext/

執行命令,生成對應擴展目錄
#./ext_skel --extname=caleng_mole --proto=/home/hm/caleng_mole.def

3:修改config.m4
去掉dnl的注釋

PHP_ARG_ENABLE(caleng_mole, whether to enable caleng_mole support,
Make sure that the comment is aligned:
[ --enable-caleng_mole Enable caleng_mole support])

4:修改caleng_mole.c

代碼如下:


/* {{{ proto int a(int x, int y)
*/
PHP_FUNCTION(a)
{
int argc = ZEND_NUM_ARGS();
int x;
int y;
int z;
if (zend_parse_parameters(argc TSRMLS_CC, "ll", &x, &y) == FAILURE)

return;
z=x+y;
RETURN_LONG(z);
}
/* }}} */
/* {{{ proto string b(string str, int n)
*/
PHP_FUNCTION(b)
{
char *str = NULL;
int argc = ZEND_NUM_ARGS();
int str_len;
long n;
char *result;
char *ptr;
int result_length;

if (zend_parse_parameters(argc TSRMLS_CC, "sl", &str, &str_len, &n) == FAILURE)
return;
result_length = str_len * n;
result = (char *) emalloc(result_length + 1);
ptr = result;
while (n--) {
memcpy(ptr, str, str_len);
ptr += str_len;
}
*ptr = '';
RETURN_STRINGL(result, result_length, 0);
}
/* }}} */


5:生成擴展庫
#cd ./caleng_mole
#/usr/local/php/bin/phpize
#./configure --with-php-config=/usr/local/php/bin/php-config
#make
#make install



6:到php的對應extensions目錄
如上圖所示
#cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
改目錄下有生成的caleng_mole.so文件

7:修改php.ini
php.ini如果找不到可以從phpinfo()打出的信息看到
#cd /usr/local/php/lib/
php.ini增加擴展信息
extension=caleng_mole.so

8:重啟Apache
# /usr/local/apache2/bin/apachectl restart

9:檢查載入
/usr/local/php/bin/php -m

10:PHP調用

代碼如下:


echo a(1,2);


輸出 3 就說明成功了!

下面是原文
Linux下用C開發PHP擴展
一、首先下載PHP源碼包,假設源碼包目錄為:/software/php-5.2.13
一、首先下載PHP源碼包,假設源碼包目錄為:/software/php-5.2.13
#> cd /software/php-5.2.13/ext
二、假設我們要開發一個名為caleng_mole的擴展,該擴展包含兩個函數:a--處理兩個整型相加和b-處理字元串重復輸出;
1、首先編寫一個函數定義文件,該文件編寫函數原型後綴為def,假設為:caleng_mole.def
int a(int x, int y)
string b(string str, int n)
2、通過擴展骨架生成器,將在ext目錄下自動建立擴展目錄caleng_mole
#> ./ext_skel --extname=caleng_mole --proto=caleng_mole.def
3、修改配置文件: #> vim /software/php-5.2.13/ext/caleng_mole/config.m4,將如下行的注釋標簽"dnl"去掉,修改後如下所示:
PHP_ARG_ENABLE(myfunctions, whether to enable myfunctions support,
Make sure that the comment is aligned:
[ --enable-myfunctions Enable myfunctions support])
4、完善函數a和b的功能: #> vim /software/php-5.2.13/ext/caleng_mole/caleng_mole.c
PHP_FUNCTION(a)
{
int x, y, z;

int argc = ZEND_NUM_ARGS();

if (zend_parse_parameters(argc TSRMLS_CC, "ll", &x, &y) == FAILURE)
return;
z = x + y;
RETURN_LONG(z);
}
PHP_FUNCTION(b)
{
char *str = NULL;
int argc = ZEND_NUM_ARGS();
int str_len;
long n;
char *result;
char *ptr;
int result_length;

if (zend_parse_parameters(argc TSRMLS_CC, "sl", &str, &str_len, &n) == FAILURE)
return;
result_length = str_len * n;
result = (char *) emalloc(result_length + 1);
ptr = result;
while (n--) {
memcpy(ptr, str, str_len);
ptr += str_len;
}
*ptr = '';
RETURN_STRINGL(result, result_length, 0);
}
三、編譯安裝,假設php的安裝目錄為:/usr/localhost/webserver/php
#> cd /software/php-5.2.13/ext/caleng_mole
#> /usr/localhost/webserver/php/bin/phpize
#> ./configure --with-php-config=/usr/localhost/webserver/php/bin/php-config
#> make
#> make install
現在將在/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613目錄下生成caleng_mole.so文件
在php.ini配置文件中加入: extension=caleng_mole.so.

F. 如何寫php擴展

PHP取得成功的一個主要原因之一是她擁有大量的可用擴展。web開發者無論有何種需求,這種需求最有可能在PHP發行包里找到。PHP發行包包括支持各種資料庫,圖形文件格式,壓縮,XML技術擴展在內的許多擴展。
擴展API的引入使PHP3取得了巨大的進展,擴展API機制使PHP開發社區很容易的開發出幾十種擴展。現在,兩個版本過去了,API仍然和PHP3時的非常相似。擴展主要的思想是:盡可能的從擴展編寫者那裡隱藏PHP的內部機制和腳本引擎本身,僅僅需要開發者熟悉API。
有兩個理由需要自己編寫PHP擴展。第一個理由是:PHP需要支持一項她還未支持的技術。這通常包括包裹一些現成的C函數庫,以便提供PHP介面。例如,如果一個叫FooBase的資料庫已推出市場,你需要建立一個PHP擴展幫助你從PHP里調用FooBase的C函數庫。這個工作可能僅由一個人完成,然後被整個PHP社區共享(如果你願意的話)。第二個不是很普遍的理由是:你需要從性能或功能的原因考慮來編寫一些商業邏輯。
如果以上的兩個理由都和你沒什麼關系,同時你感覺自己沒有冒險精神,那麼你可以跳過本章。
本章教你如何編寫相對簡單的PHP擴展,使用一部分擴展API函數。對於大多數打算開發自定義PHP擴展開發者而言,它含概了足夠的資料。學習一門編程課程的最好方法之一就是動手做一些極其簡單的例子,這些例子正是本章的線索。一旦你明白了基礎的東西,你就可以在互聯網上通過閱讀文擋、原代碼或參加郵件列表新聞組討論來豐富自己。因此,本章集中在讓你如何開始的話題。在UNIX下一個叫ext_skel的腳本被用於建立擴展的骨架,骨架信息從一個描述擴展介面的定義文件中取得。因此你需要利用UNIX來建立一個骨架。Windows開發者可以使用Windows ext_skel_win32.php代替ext_skel。
然而,本章關於用你開發的擴展編譯PHP的指導僅涉及UNIX編譯系統。本章中所有的對API的解釋與UNIX和Windows下開發的擴展都有聯系。

G. PHP怎麼開發

首先,搭建好PHP環境。
然後,寫代碼,任何無DOM的文本編輯器都可以。
再然後,放入環境中運行

H. 如何編譯安裝PHP擴展

一開始安裝PHP的時候,我們並不知道需要哪些擴展,所以只有等到我們真正用到的時候才想辦法去安裝。
安裝PHP擴展最簡單的辦法就是
sudo apt-get install php5-xxx

但有的時候並非我們所願,源裡面並沒有我們需要的擴展,這時候就需要我們下載源碼自己編譯安裝了。
這篇文章中我將介紹在本地Linux平台下編譯安裝PHP擴展的方法。
現在網站根目錄下創建 index.php 列印基本的配置信息,以驗證我們是否安裝成功。
配置編譯環境
我們需要安裝一些編譯必須的庫,還有 php-dev 版本
Ubuntu
sudo apt-get install php5-dev php5-mysql gcc libpcre3-dev

Fedora
sudo yum install php-devel php-mysqlnd gcc libtool

RHEL
sudo yum install php-devel php-mysql gcc libtool

Suse
yast2 -i php5-pear php5-devel php5-mysql gcc

安裝擴展
PHP有兩種可供安裝的擴展:一種是PHP原生的但是默認沒有安裝的,另一種的第三方開發的擴展。
下面依次介紹兩種擴展的安裝方法:
安裝之前我們需要一份和當前機器上相同版本的PHP源碼
cd code
wget http://cn2.php.net/distributions/php-5.5.9.tar.bz2
tar xvjf php-5.5.9.tar.bz2
cd php-5.5.9

前往此處 下載相應的源碼包。
在 /ext 目錄下面可以看到所有PHP原生的擴展。
安裝原生擴展
以 PHP-intl 為例,這是PHP國際化的擴展。
為了安裝這個擴展我們需要先安裝ICU 庫
sudo apt-get install icu-devtools icu-doc libicu-dev libicu52 libicu52-dbg

ICU 安裝成功之後進入/ext/intl 目錄:
cd intl
phpize
./configure --enable-intl
make
sudo make install

下面解釋一下上面的每個命令:
phpize : 是用來擴展php擴展模塊的,通過phpize可以建立php的外掛模塊
./configure --enable-intl: 配置編譯環境,相當於告訴編譯器編譯PHP源碼的時候加上intl這個擴展。
make: 將會把源碼編譯成 intl.so
make install : 將會把 intl.so 移動到當前安裝的 PHP 的擴展目錄。
接下來我們要做的就是在php.ini中啟用這個擴展,這一步將會在最後給出示例。
安裝第三方擴展
將以這個 擴展為例,這個擴展主要實現了PHP識別條形碼的功能。
先安裝必要的依賴
sudo apt-get install pkg-config

git clone https://github.com/mongodb/mongo-php-driver
cd mongo-php-driver
phpize
./configure
make
sudo make install

將會生成一個文件,將其拷貝到PHP的擴展目錄下面。
啟用擴展
在php.ini中啟用擴展的方式有很多:
直接在php.ini文件中添加 extension=mongo.so,這是最簡單直接的方法。
也可以單獨建一個ini文件,然後在php.ini中包含這些文件就可以了。
下面介紹一下第二種方法:
cd `/etc/php5/mods-available`

這個目錄里可以放新建的ini文件,然後執行
sudo touch mongo.ini
echo "extension=mongo.so" | sudo tee -a mongo.ini
sudo touch intl.ini
echo "extension=intl.so" | sudo tee -a intl.ini

上面的命令將會創建ini文件,並且寫如相應的配置信息。
然後執行下面的命令啟用擴展即可(需要安裝 php5enmod 工具):
sudo php5enmod mongo
sudo php5enmod intl

如果未安裝 php5enmod 工具,則需要手動配置:
ln -s /etc/php5/mods-available/mongo.ini /etc/php5/cli/conf.d/mongo.ini
ln -s /etc/php5/mods-available/intl.ini /etc/php5/cli/conf.d/intl.ini
ln -s /etc/php5/mods-available/mongo.ini /etc/php5/fpm/conf.d/mongo.ini
ln -s /etc/php5/mods-available/intl.ini /etc/php5/fpm/conf.d/intl.ini

最後在執行一下重啟操作就可以了:
sudo service nginx restart
sudo service php5-fpm restart

I. 如何編寫一個PHP的C擴展

一、首先下載PHP源碼包,假設源碼包目錄為:/software/php-5.2.13
一、首先下載PHP源碼包,假設源碼包目錄為:/software/php-5.2.13
#> cd /software/php-5.2.13/ext
二、假設我們要開發一個名為caleng_mole的擴展,該擴展包含兩個函數:a--處理兩個整型相加和b-處理字元串重復輸出;
1、首先編寫一個函數定義文件,該文件編寫函數原型後綴為def,假設為:caleng_mole.def
int a(int x, int y)
string b(string str, int n)
2、通過擴展骨架生成器,將在ext目錄下自動建立擴展目錄caleng_mole
#> ./ext_skel --extname=caleng_mole --proto=caleng_mole.def
3、修改配置文件: #> vim /software/php-5.2.13/ext/caleng_mole/config.m4,將如下行的注釋標簽"dnl"去掉,修改後如下所示:
PHP_ARG_ENABLE(myfunctions, whether to enable myfunctions support,
Make sure that the comment is aligned:
[ --enable-myfunctions Enable myfunctions support])
4、完善函數a和b的功能: #> vim /software/php-5.2.13/ext/caleng_mole/caleng_mole.c
PHP_FUNCTION(a)
{
int x, y, z;

int argc = ZEND_NUM_ARGS();

if (zend_parse_parameters(argc TSRMLS_CC, "ll", &x, &y) == FAILURE)
return;
z = x + y;
RETURN_LONG(z);
}
PHP_FUNCTION(b)
{
char *str = NULL;
int argc = ZEND_NUM_ARGS();
int str_len;
long n;
char *result;
char *ptr;
int result_length;

if (zend_parse_parameters(argc TSRMLS_CC, "sl", &str, &str_len, &n) == FAILURE)
return;
result_length = str_len * n;
result = (char *) emalloc(result_length + 1);
ptr = result;
while (n--) {
memcpy(ptr, str, str_len);
ptr += str_len;
}
*ptr = '\0';
RETURN_STRINGL(result, result_length, 0);
}
三、編譯安裝,假設php的安裝目錄為:/usr/localhost/webserver/php
#> cd /software/php-5.2.13/ext/caleng_mole
#> /usr/localhost/webserver/php/bin/phpize
#> ./configure --with-php-config=/usr/localhost/webserver/php/bin/php-config
#> make
#> make install
現在將在/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613目錄下生成caleng_mole.so文件
在php.ini配置文件中加入: extension=caleng_mole.so.
搞定收工

J. 如何用c語言在windows平台上開發php extension

如何使用C語言開發PHP擴展。

函數功能:php裡面的整數是有符號數,其內部實現其實就是long,不是unsigned long。對於32位機器來說,php最大能表示的整數就是2^31-1了,一般在應用中碰到大於2^31-1而小於2^32的數就只能用字元串來表示了。對於mixed int_ext(string in)來說,如果字元串in表示的整數小於2^31-1,那麼就返回整數,如果大於就返回字元串。

開發擴展步驟如下:(首先需要下載php的源碼,這里下載的是php-5.3.14)

1,建立擴展骨架

[plain] view plainprint?
01.cd php-5.3.14/ext
02../ext_skel --extname=int_ext
cd php-5.3.14/ext
./ext_skel --extname=int_ext
2,修改編譯參數

[plain] view plainprint?
01.cd php-5.3.14/ext/int_ext
02.vi config.m4
cd php-5.3.14/ext/int_ext
vi config.m4去掉 PHP_ARG_ENABLE(int_ext, whether to enable int_ext support 和
[ --enable-int_ext Enable int_ext support]) 兩行前面的dnl 修改後為:

[plain] view plainprint?
01.1. dnl Otherwise use enable:
02.2. PHP_ARG_ENABLE(int_ext, whether to enable int_ext support,
03.3. dnl Make sure that the comment is aligned:
04.4. [ --enable-int_ext Enable int_ext support])
1. dnl Otherwise use enable:
2. PHP_ARG_ENABLE(int_ext, whether to enable int_ext support,
3. dnl Make sure that the comment is aligned:
4. [ --enable-int_ext Enable int_ext support])
3,編寫C代碼

[plain] view plainprint?
01.cd php-5.3.14/ext/int_ext
02.vi php_int_ext.h
03.#在 PHP_FUNCTION(confirm_int_ext_compiled); 後面新增一行 PHP_FUNCTION(int_ext);
cd php-5.3.14/ext/int_ext
vi php_int_ext.h
#在 PHP_FUNCTION(confirm_int_ext_compiled); 後面新增一行 PHP_FUNCTION(int_ext);[plain] view plainprint?
01.cd php-5.3.14/ext/int_ext
02.vi int_ext.c
03.#在PHP_FE(confirm_int_ext_compiled, NULL) 後面添加 PHP_FE(int_ext, NULL)添加後為:
04.1. zend_function_entry int_ext_functions[] = {
05.2. PHP_FE(confirm_int_ext_compiled, NULL) /* For testing, remove later. */
06.3. PHP_FE(int_ext, NULL) /* For testing, remove later. */
07.4. {NULL, NULL, NULL} /* Must be the last line in int_ext_functions[] */
08.5. };
cd php-5.3.14/ext/int_ext
vi int_ext.c
#在PHP_FE(confirm_int_ext_compiled, NULL) 後面添加 PHP_FE(int_ext, NULL)添加後為:
1. zend_function_entry int_ext_functions[] = {
2. PHP_FE(confirm_int_ext_compiled, NULL) /* For testing, remove later. */
3. PHP_FE(int_ext, NULL) /* For testing, remove later. */
4. {NULL, NULL, NULL} /* Must be the last line in int_ext_functions[] */
5. };
核心代碼:

[plain] view plainprint?
01.PHP_FUNCTION(int_ext)
02.{
03. char * str = NULL;
04. int str_len;
05. int argc = ZEND_NUM_ARGS();
06. if(zend_parse_parameters(argc TSRMLS_CC,"s",&str,&str_len) == FAILURE)
07. return ;
08. char * result;
09. int result_length = str_len;
10. result = (char *) emalloc(result_length + 1);
11. memcpy(result,str,result_length);
12. unsigned long result_num = strtoul(result, NULL, 10);
13. int sizeoflong sizeof(long);
14. unsigned long max_long = 1 << (sizeoflong * 8 -1);
15. if(result_num < max_long)
16. {
17. RETURN_LONG(result_num);
18. }
19. else
20. {
21. RESULT_STRINGL(result, result_length, 0);
22. }
23.}
PHP_FUNCTION(int_ext)
{
char * str = NULL;
int str_len;
int argc = ZEND_NUM_ARGS();
if(zend_parse_parameters(argc TSRMLS_CC,"s",&str,&str_len) == FAILURE)
return ;
char * result;
int result_length = str_len;
result = (char *) emalloc(result_length + 1);
memcpy(result,str,result_length);
unsigned long result_num = strtoul(result, NULL, 10);
int sizeoflong sizeof(long);
unsigned long max_long = 1 << (sizeoflong * 8 -1);
if(result_num < max_long)
{
RETURN_LONG(result_num);
}
else
{
RESULT_STRINGL(result, result_length, 0);
}
}

4,編譯

[plain] view plainprint?
01.cd php-5.3.14/ext/int_ext
02./usr/local/php/bin/pphpize
03../configure --with-php-config=/usr/local/php/bin/php-config
04.make
05.make install
cd php-5.3.14/ext/int_ext
/usr/local/php/bin/pphpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
此時會產生一個so文件: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/int_ext.so
修改php.ini 添加擴展extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"

[int_ext]

extension = int_ext.so

5,測試

[plain] view plainprint?
01.$a = int_ext("12345678900");
02.var_mp($a);
03.$a = int_ext("123456789");
04.var_mp($a);
$a = int_ext("12345678900");
var_mp($a);
$a = int_ext("123456789");
var_mp($a);
結果輸出:

[plain] view plainprint?
01.string(11) "12345678900"
02.int(123456789)

閱讀全文

與php擴展開發中文教程相關的資料

熱點內容
python導出sap 瀏覽:513
車智匯app如何下載 瀏覽:434
python如何將圖片輸出到雲伺服器 瀏覽:838
貴陽螺桿壓縮冷凝機組組成 瀏覽:115
掃描製作pdf 瀏覽:515
2016奇駿車機如何安裝app 瀏覽:764
phpvc9x64 瀏覽:73
蜜語星球解壓 瀏覽:476
c語言編譯器怎麼打不開 瀏覽:818
海印程序員 瀏覽:648
為什麼華為手機找不到伺服器 瀏覽:664
pdf增減 瀏覽:608
雲伺服器怎麼公網架設網站 瀏覽:91
pythonrequests慢 瀏覽:140
excel保存沒有pdf 瀏覽:922
冰箱壓縮機管囗示意圖 瀏覽:497
許振民編譯局 瀏覽:625
雙網路加什麼伺服器好用 瀏覽:211
linux命令中文 瀏覽:839
python怎麼做物聯網 瀏覽:731