《PHP設計模式介紹》第一章 編程慣用法(3)_PHP教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:《PHP設計模式介紹》導言
      當你在不斷的試圖從你的應用程序中發現新的特征時,你是否發現你提出的解決方法和一些以前你已經實現的東西是如此的類似呢?如果你是一個程序員(即使你才 開始很短的時間),你都可能回答&ldqu

      其他實踐

      下面還有集中其他的實踐習慣值得提及到的,也值得加入到你自己的編程習慣里面的。

      UML

      統一建模語言(UML)是一種與具體編程語言無關的用來描述面對對象編程觀念的方法。關于UML的相關信息資料你可以從http://www.uml.org上找到。

      UML涉及到很多方面,但對PHP程序員來說,其中最相關的兩方面是類圖和序列圖。

      類圖描述了一個或者更多的類以及他們在你的程序之間的相互關系。(譯者注:最好能夠參考相關的UML教材,將有助于你的理解。)每個類都用一個盒子標識,每個盒子都分成三部分:第一部分是類名,第二步分列舉了類的屬性(變量),最后一部分列舉了類的方法。屬性和方法的可見度被設計為:+代表public(公開),—代表private(私有),#代表protected(受保護的)。

      序列圖描述了為一個特定的任務或者事件,你對代碼中的對象之間的典型的交互活動。一個序列圖主要傳達這樣的信息:誰,以什么樣的順序,在什么時候,調用不同的方法(由名字也可以看出:“序列圖”)。序列圖是對象集和開發人員之間交互溝通的非常有用工具。

      在我自己的工程里,我使用這兩種典型的類圖來勾畫我們的設計,但是很少能將他們格式化到項目文檔里面。對象之間的關系經常隨著你對系統理解的深化和用戶需求的變化而改變,因此這些圖表很快就會過時。這也就是說“一張圖足足值一千個文字”。這些圖表對新開發人員理解系統是非常由幫助的,也能做為使用你軟件的開發人員的手冊。

      資源控制

      “及時的、經常性的保存”是開發人員另外一個有用的格言。即使你是這個項目的唯一的開發人員,你也應該維持所有的資源處于控制下。

      網上可以獲取到很多關于資源控制的解決方法,其中兩個出色:CVS(http://www.cvshome.org)和Subversion(http://subversion.tigris.org)。CVS是一個非常流行的用于解決PHP和Apache項目的工具。同時,Subversion也正在迅速的成為流行的二選一工具之一,因為它克服了CVS的一些不足之處(特別是在原語命令和刪除/重命名文件夾或文件方面)。然而很少有項目安裝Subversion服務器。

      在工作的時候,我采用CVS,但這本書的代碼都是使用Subversion來維護的。

      資源代碼文檔

      如果你瀏覽完了這本書的所有頁面,你可以會注意到一些明顯的格式化的注釋塊類似于:

      /**
      * funny multi-line comments
      * @something what is this?
      */

      它們被稱為“docblocks”(譯者注:文檔塊),是由程序,比如說phpDocumentor(http://phpdocu.sf.net),為你的PHP項目自動生成的應用程序接口(API)文檔。

      Docblocks(文檔塊)是特定格式的多行注釋,以/**標識開始,接下來的每行都以*為第一個字符,并以*/標識注釋終止。在每行的前綴前面允許有空格。

      @something 代表一個“標簽”(tag),當文檔需要轉化為解析格式時,標簽用來闡明一些必要的信息。比如說標簽@private,使用在php4中,常用來標識類的這個方法或者屬性時私有的,因為在php4中時沒有提供這種天然的能力的(譯者注:在php4中時無法說明一個變量或者方法是否私有的)。

      資源代碼文檔比如說docblocks即是一個有用的參考資料,也是開源項目的一個好廣告。其中一個例子(我幫忙維護的)就是SimpleTestAPI文檔(http://simpletest.org)。

      <?php
      // PHP4
      // the subject code
      define(‘TAX_RATE’, 0.07);
      function calculate_sales_tax($amount) {
      round($amount * TAX_RATE,2);
      }
      // include test library
      require_once ‘simpletest/unit_tester.php’;
      require_once ‘simpletest/reporter.php’;
      // the test
      class TestingTestCase extends UnitTestCase {
      function TestingTestCase($name=’’) {
      $this->UnitTestCase($name);
      }
      function TestSalesTax() {
      $this->assertEqual(7, calculate_sales_tax(100));
      }
      }
      // run the test
      $test = new TestingTestCase(‘Testing Unit Test’);
      $test->run(new HtmlReporter());

      分享:php escapeshellcmd多字節編碼漏洞
      漏洞公告在http://www.sektioneins.de/advisories/SE-2008-03.txt PHP 5 = 5.2.5 PHP 4 = 4.4.8 一些允許如GBK,EUC-KR, SJIS等寬字節字符集的系統都可能受此影響,影響還是非常

      共3頁上一頁123下一頁
      來源:模板無憂//所屬分類:PHP教程/更新時間:2008-08-22
      相關PHP教程