PHP是目前應用非常廣泛的一門語言,從國外的Facebook、Twitter到國內的淘寶、騰訊、百度再到互聯網上林林總總的各種大中小型網站都能見到它的身影。 PHP的成功,應該說很大程度上依賴其開放的擴充API機制和豐富的擴充元件(PHP Extension),而正是這些擴充元件使得PHP從各種資料庫操作到XML、JSON、加密、檔案處理、圖形處理、Socket等領域無所不能。有時候開發人員可能需要開發自己的PHP擴展,目前PHP5的擴展機制是基於Zend API的,Zend API提供了豐富的介面和巨集定義,加上一些實用工具,使得PHP擴充開發起來難度並不算特別大。本文將介紹關於PHP擴展組件開發的基本知識,並透過一個實例展示開發PHP擴展的基本過程。
PHP擴充元件的開發過程在Unix和Windows環境下有所不同,但基本上是互通的,本文將基於Unix環境(具體使用Linux)。閱讀本文需要簡單了解Unix環境、PHP和C語言的一些基礎知識,只要簡單了解就行,我會盡量不涉及太過具體的操作系統和語言特性,並在必要的地方加以解釋,以便讀者閱讀。
本文的特定開發環境為Ubuntu 10.04 PHP 5.3.3。
下載PHP原始碼
要開發PHP擴展,第一步要下載PHP原始碼,因為裡面有開發擴充所需的工具。我下載的是PHP最新版本5.3.3,格式為tar.bz2壓縮包。下載網址為:http://cn.php.net/get/php-5.3.3.tar.bz2/from/a/mirror。
下載後,將原始程式碼移至適當的目錄並解壓縮。解壓縮指令為:
<ol class="dp-xml"><li class="alt"><span><span>tar -jxvf 源码包名称 </span></span></li></ol>
若下載的是tar.gz壓縮包,解壓縮指令為
<ol class="dp-xml"><li class="alt"><span><span>tar -zxvf 源码包名称 </span></span></li></ol>
解壓縮後,在原始碼目錄中有ext目錄,這裡便是和PHP擴充有關的目錄。進入目錄後用ls查看,可以看到許多已經存在的擴充。下圖是在我的環境下查看的結果: