php設計模式介紹之值對象模式(3)_PHP教程

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

      推薦:談PHP程序開發中的中文編碼問題
      PHP程序設計中中文編碼問題曾經困擾很多人,導致這個問題的原因其實很簡單,每個國家(或區域)都規定了計算機信息交換用的字符編碼集,如美國的擴展 ASCII 碼, 中國的 GB2312-80,日本的 JIS 等。作為該國家/區域內信息處理的基礎,字符編碼集起著統一編碼的

      詳細例子:

      讓我們在一下更加復雜的例子中查看值對象模式的功能。

      讓我們開始實現一個的基于PHP5中Dollar類中的一個Monopoly游戲。

      第一個類Monopoly的框架如下:

      class Monopoly {

      protected $go_amount;

      /**

      * game constructor

      * @return void

      */

      public function __construct() {

      $this->go_amount = new Dollar(200);

      }

      /**

      * pay a player for passing 揋o?/span>

      * @param Player $player the player to pay

      * @return void

      */

      public function passGo($player) {

      $player->collect($this->go_amount);

      }

      }

      目前,Monopoly的功能比較簡單。構造器創建一個Dollar類的實例$go_amount,設定為200,實例go_amount常常被passtGo()函數調用,它帶著一個player參數,并讓對象player的函數collect為player機上200美元.

      Player類的聲明請看下面代碼,Monoplay類調用帶一個Dollar參數的Player::collect()方法。然后把Dollar的數值加到Player的現金余額上。另外,通過判斷Player::getBalance()方法函數返回來的余額,我們可以知道使訪問當前Player和Monopoly對象實例是否在工作中。

      class Player {

      protected $name;

      protected $savings;

      /**

      * constructor

      * set name and initial balance

      * @param string $name the players name

      * @return void

      */

      public function __construct($name) {

      $this->name = $name;

      $this->savings = new Dollar(1500);

      }

      /**

      * receive a payment

      * @param Dollar $amount the amount received

      * @return void

      */

      public function collect($amount) {

      $this->savings = $this->savings->add($amount);
      }

      * return player balance

      * @return float

      */

      public function getBalance() {

      return $this->savings->getAmount();

      }

      }

      上邊已經給出了一個Monopoly和Player類,你現在可以根據目前聲明的幾個類定義進行一些測試了。

      MonopolyTestCase的一個測試實例可以像下面這樣寫:

      class MonopolyTestCase extends UnitTestCase {

      function TestGame() {

      $game = new Monopoly;

      $player1 = new Player(‘Jason’);

      $this->assertEqual(1500, $player1->getBalance());

      $game->passGo($player1);

      $this->assertEqual(1700, $player1->getBalance());

      $game->passGo($player1);

      $this->assertEqual(1900, $player1->getBalance());

      }

      }

      如果你運行MonopolyTestCase這個測試代碼,代碼的運行是沒有問題的。現在可以添加一些新的功能。

      分享:淺談正確理解PHP程序錯誤信息的表示含義
      簡述:我們編寫程序時,無論怎樣小心謹慎,犯錯總是在所難免的。這些錯誤通常會迷惑PHP編譯器。如果開發人員無法了解編譯器報錯信息的含義,那么這些錯誤信息不僅毫無用處,還會常常讓人感到沮喪。 我們編寫程序時,無論怎樣小心謹慎,犯錯總是在所難免的。

      來源:模板無憂//所屬分類:PHP教程/更新時間:2009-06-18
      相關PHP教程