什麼是 PEAR?PEAR 是什麼意思? PEAR 是 PHP的 官方開源類庫,PHP Extension and Application Repository 的縮寫。Pear 在英文中是梨子的意思。PEAR 将 PHP 程式開發過程中常用的功能編寫成類庫,涵蓋了頁面呈面、資料庫通路、檔案操作、資料結構、緩存操作、網絡協定等許多方面,使用者可以很友善地使用。它是一個 PHP 擴充及應用的一個代碼倉庫,簡單地說,PEAR 就是 PHP 的 cpan。
為什麼要使用 PEAR? PHP 是一個非常優秀的腳本語言,簡潔、高效,随着 4.0 的釋出,越來越多的人使用它來進行動态網站的開發,可以說,PHP 已經成為最優秀的 INTERNET 開發語言之一,尤其對于那些需要能夠快速、高效地開發中小規模的商業應用的網站開發人員,PHP 是其首選的語言。 但是随着 PHP 的應用的不斷增多,對于這些應用缺乏統一的标準和有效的管理,是以,PHP 社群很難象 PERL 社群的人們那樣友善的共享彼此的代碼和應用,因為 PHP 缺乏象 CPAN 那樣的統一的代碼庫來分類管理應用的代碼子產品(熟悉 PERL 的人都知道,CPAN 是一個巨大的 PERL 的擴充子產品倉庫,編寫的應用子產品可以放在 CPAN 下面的适當的分類目錄下面,其他的人可以很友善地複用,當然,你編寫應用子產品時候也需要遵守其中的準則。) 為此,PEAR 就應運而生了,并且從 4.04 開始,随着 PHP 核心一起被分發。
PEAR 能給我帶來什麼好處? 1.如前所述,PEAR 按照一定的分類來管理 PEAR 應用代碼庫,你的 PEAR 代碼可以組織到其中适當的目錄中,其他的人可以友善地檢索并分享到你的成果。 2.PEAR 不僅僅是一個代碼倉庫,它同時也是一個标準,使用這個标準來書寫你的 PHP 代碼,将會增強你的程式的可讀性,複用性,減少出錯的幾率。 3.PEAR 通過提供 2 個類為你搭建了一個架構,實作了諸如析構函數,錯誤捕獲功能,你通過繼承就可以使用這些功能。
PEAR 的提供目的是什麼? 一個PHP 使用者的開源(open-sourced)代碼組織庫 一個代碼分發和包維護和系統 一個用PHP寫的标準風格 PHP 基礎類(PFC) PHP 擴充公共庫(PECL), 更詳細說明在下面 一個支援 PHP/PEAR 團體的網站,郵件清單和下載下傳鏡像
PEAR 的編碼規則 PEAR 的編碼規則包括縮進規則,控制結構,函數調用,函數定義,注釋,包含代碼,PHP 标記,檔案頭的注釋塊,CVS 标記,URL 樣例,常量的命名這 11 方面。下面簡要地介紹一下:
縮進規則: PEAR 中需要使用 4 個空格來縮排代碼,并且不使用 TAB。如果你使用 VIM,将下列設定放入你的~/.vimrc中: set expandtab
set shiftwidth=4
set tabstop=4
如果,你使用 Emacs/XEmacs,需要把 indent-tabs-mode 設定成 nil。
不過你象我一樣喜歡用 (X)Emacs 編輯PHP檔案,我強烈推薦你安裝 PHP-MODE,這樣當你編寫 PEAR 代碼的時候,它會自動調整你的縮排風格,當然 PHP-MODE 還有許多很優秀的特性,你可以從資源清單中的地方下載下傳最新版的 PHP-MODE。
控制結構: 這裡所說的控制結構包括: if for while switch 等。對于控制結構,在關鍵字(如if for ..)後面要空一個格,然後再跟控制的圓括号,這樣,不至于和函數調用混淆,此外,你應該盡量完整的使用花括号 {},即使從文法上來說是可選的。這樣可以防止你以後需添加新的代碼行時産生邏輯上的疑惑或者錯誤。這裡是一個樣例:
if ((條件1) && (條件2)) { 語句1; } esleif ((條件3) || (條件4)) { 語句2; } else { 語句3; }
函數調用: 對于函數調用,函數名和左括号 ( 之間不應該有空格,對于函數參數,在分隔的逗号和下一個參數之間要有相同的空格分離,最後一個參數和右括号之間不能有空格。下面是一個标準的函數調用; $result = foo($param1, $param2, $param3);
不規範的寫法: $result=foo ($param1,$param2,$param3); $result=foo( $param1,$param2, $param3 );
此外,如果要将函數的傳回結果指派,那麼在等号和所指派的變量之間要有空格,同時,如果是一系列相關的指派語句,你添加适當的空格,使它們對齊,就象這樣: $result1 = $foo($param1, $param2, $param3); $var2 = $foo($param3); $var3 = $foo($param4, $param5);
函數定義: 函數定義遵循“one true brace”習俗: function connect(&$dsn, $persistent = false) { if (is_array($dsn)) { $dsninfo = &&dsn; } else { $dsninfo = DB::parseDSN($dsn); } if (!$dsninfo || !$dsninfo['phptype']) { return $this->raiseError(); } return true; }
如上所示,可選參數要在參數表的末端,并且總是盡量傳回有意義的函數值。
關于注釋: 對于類的線上文檔,應該能夠被 PHPDoc 轉換,就象 JavaDoc 那樣。PHPDoc 也是一個 PEAR 的應用程式,更詳細的介紹你可以去 http://www.phpdoc.de/ 檢視。除了類的線上文檔,建議你應該使用非文檔性質的注釋來诠釋你的代碼,當你看到一段代碼時想:哦,我想不需要在文檔裡去仔細描述它吧。那麼你最好給這段代碼作一個簡單的注釋,這樣防止你會忘記它們是如何工作的。對于注釋的形式,C 的 和 C++ 的 // 都不錯,不過,不要使用 Perl 或者 shell 的 # 注釋方式。
包含代碼: 無論什麼時候,當你需要無條件包含進一個 class 檔案,你必須使用 requre_once; 當你需要條件包含進一個 class 檔案,你必須使用 include_once; 這樣可以保證你要包含的檔案隻會包含一次,并且這 2 個語句共用同一個檔案清單,是以你無須擔心二者會混淆,一旦 require_once 包含了一個檔案,include_once 不會再重複包含相同的檔案,反之亦然。
PHP 代碼标記: 任何時候都要使用定義你的 php 代碼,而不要簡單地使用,這樣可以保證 PEAR 的相容性,也利于跨平台的移植。
檔案頭的注釋聲明: 所有需要包含在 PEAR 核心釋出的PHP代碼檔案,在檔案開始的時候,你必須加入以下的注釋聲明: // +----------------------------------------------------------------------+ // | PHP version 4.0 | // +----------------------------------------------------------------------+ // | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group | // +----------------------------------------------------------------------+ // | This source file is subject to version 2.0 of the PHP license, | // | that is bundled with this package in the file LICENSE, and is | // | available at through the world-wide-web at | // | http://www.php.net/license/2_02.txt. | // | If you did not receive a copy of the PHP license and are unable to | // | obtain it through the world-wide-web, please send a note to | // | [email protected] so we can mail you a copy immediately. | // +----------------------------------------------------------------------+ // | Authors: Original Author | // | Your Name | // +----------------------------------------------------------------------+ // // $Id$
對于不在 PEAR 核心代碼庫中的檔案,建議你也在檔案的開始處有這樣一個類似的注釋塊,标明版權,協定,作者等等。同時也在第一行加入 VIM 的 MODELINE,這樣在 VIM 中能夠保持 PEAR 的代碼風格。
CVS 标記: 如上面所展示那樣,在每個檔案中加入 CVS 的 ID 标記,如果你編輯或修改的檔案中沒有這個标記,那麼請加入,或者是替換原檔案中相類似的表現形式(如“Last modified”等等)
URL 樣本: 你可以參照 RFC 2606,使用“www.example.com”作為所有的 URL 樣本。
常量命名: 常量應該盡量使用大寫,為了便于了解,使用下劃線分割每個單詞。同時,你應該常量所在的包名或者是類名作為字首。比如,對于 Bug 類中常量應該以 Bug_ 開始。以上是 PEAR 的編碼規則,詳細的編碼規則可以參考 PEAR 中的 CODING_STANDDARD 檔案的說明。為了更好地了解這些編碼規則,你也可以參考一下現有 PEAR 核心子產品的代碼。