用PEAR來寫你的PHP程式_PHP教程

來源:互聯網
上載者:User

如前所述,PEAR按照一定的分類來管理PEAR應用程式碼程式庫,你的PEAR代碼可以組織到其中適當的目錄中,其他的人可以方便地檢索並分享到你的成果。 PEAR不僅僅是一個代碼倉庫,它同時也是一個標準,使用這個標準來書寫你的PHP代碼,將會增強你的程式的可讀性,複用性,減少出錯的幾率。 PEAR通過提供2個類為你搭建了一個架構,實現了諸如解構函式,錯誤捕獲功能,你通過繼承就可以使用這些功能。

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代碼檔案,在檔案開始的時候,你必須加入以下的注釋聲明:/* vim: set expandtab tabstop=4 shiftwidth=4: */
// +----------------------------------------------------------------------+
// | 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 |
// | license@php.net 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核心模組的代碼。

開始使用PEAR

使用PEAR很簡單,你只需這樣定義你自己的PEAR程式:require_once "PEAR.php";
class your_class_name extends PEAR{
你的類定義...
}


當然,你需要遵守前面說的PEAR的編碼規則,之後你就可以在你的類內部實現你要做的事情了。下面,我們展開討論一下,實際上PEAR為我們提供了2個預定義類: PEAR:這是PEAR的基類,所有的PEAR擴充都要從它繼承派生出來。 PEAR_Error:PEAR的錯誤處理的基類,你可以選擇派生出自己的錯誤處理的類。

一般來說,你不應該直接建立PEAR的執行個體,而是要自己派生出一個新的類,然後再建立這個新類的執行個體。作為基類,PEAR給我們提供了一些有用的功能,最主要的就是解構函式和錯誤處理

解構函式
PHP 支援建構函式,但是並不支援解構函式,不過,PHP提供register_shutdown_function()這個函數,從而能夠在指令碼終止前回調註冊的函數,因此PEAR利用這個特性,提供了解構函式的模擬。假如你有一個PEAR的子類,叫做mypear,那麼在mypear類中,你可以定義一個

http://www.bkjia.com/PHPjc/508246.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/508246.htmlTechArticle如前所述,PEAR按照一定的分類來管理PEAR應用程式碼程式庫,你的PEAR代碼可以組織到其中適當的目錄中,其他的人可以方便地檢索並分享到你的成...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.