PHP的擴展開發(fā)的確是一件很不容易的事情。我已經(jīng)開發(fā)了好幾個擴展了,可是每次都會遇到問題。很多問題,沒有手冊,根本就是讓人束手無策。
只有耐心的讀它核心的代碼,特別是出錯部分的代碼,才能找到一些端倪。
對于新手來說,首先要搞清楚里面的基本的概念。這點很重要?;镜母拍钣校?br /> PHP 程序的生存周期
thread safe
unthread safe
PHP 全局變量
PHP 預(yù)定義常量
zval
內(nèi)存分配
創(chuàng)建 PHP 數(shù)組
創(chuàng)建 PHP 函數(shù)
創(chuàng)建 PHP 對象
當(dāng)然,要搞清楚這些也不是很容易,建議去 zend devzone 去找找英文的資料。當(dāng)然,要把基本的C 語言的指針的概念搞清楚,精通宏定義,編譯預(yù)處理。
如果你搞清楚了這些概念,就可以著手寫一個簡單的擴展了。
你要熟悉visual studio 的編譯選項。當(dāng)然你可能只希望在linux 能運行程序就好了 。我更加喜歡 在windows 下面調(diào)試。然后,遷移到linux下面。
盡量用標(biāo)準(zhǔn)的C++ 寫,基本上不會出遷移上的問題。畢竟,windows 下面的調(diào)試 非常的直觀 和 方便。
互聯(lián)網(wǎng)上PHP 擴展開放的資料90%基本上已經(jīng)過時了。要注意篩選。所以,如果你對 如何 寫 lib 和 dll 不熟悉,那么,千萬要去學(xué)一學(xué)。
否則,基本上連開發(fā)環(huán)境都很難配置。
雖然編寫擴展部一定要編譯整個PHP。但是,作為熟悉 PHP 的架構(gòu)的一部分,建議你編譯。當(dāng)然,編譯整個PHP 是一項很有挑戰(zhàn)新的工作。你要從互聯(lián)網(wǎng)上下載各種各樣的關(guān)聯(lián)
第三方的源碼包進行編譯。有些包,在windows下編譯相當(dāng)?shù)穆闊?。至少你要編譯下面的包:
pcre
icu
cclient
dirent
freetype
libbz2
libcurl
libiconv
libjpeg
libmcrypt
libpng
libtidyy
libxml2
libxpm
libxslt
openldap
openssl
qdmb
zlib
我花費了整整兩天時間,才把他們?nèi)吭趙indows 編譯成功。
Tag標(biāo)簽: php,擴展開發(fā)
作者資料:
暮夏
我的主頁 個人資料
我的閃存 與我聯(lián)系