<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] 本節介紹面向對象編程的主要概述,并探索這些概念之間如何交互;第3章將深入討論這些概念在PHP6中的實現細節。本間涵蓋了以下主題: * 類(Class) * 對象(Object) * 繼承(Inheritance) * 多態(Polymorphism) * 接口(Interface) * 封裝(Encapsulation) # 1.3 類 類是一個代碼單元(由變量和函數組成),該代碼單元描述了集合中所有成員的特征和行為。 ## 1.3.1 對象 類可以看成是構造對象的藍本。 類永遠不能有導發值 或狀態,只有對象才可以值或狀態。 在實例化,就可以將對象用于實現應用程序的業務需求。 ### 1. 創建類 ``` <?php class Demo{ } ``` 實例化一個對象 ``` <?php require_once('class.Demo.php'); $objDemo = new Demo(); ``` ### 2.添加方法 ``` <?php class Demo{ function sayHello($name){ print "Hello $name"; } } ``` 使用 `->` 來訪問新創建的函數: ``` <?php require_once('class.Demo.php'); $objDemo = new Demo(); $objDemo->sayHello('Steve'); ``` >PHP在其OO語法中根本不使用點操作(.) ### 3.添加屬性 在面向過程代碼中,當希望存儲某個值 時,會將該值賦給一個`變量`。 在OOP中,當希望存儲某個屬性的值時,也可以使用一個`變量`。 該變量在類聲明的頂部聲明,`類聲明位于包含類代碼的大括號中`。 變量的名稱就是屬性的名稱! 聲明使用`public $property`,使用`$obj->property`來訪問。 ``` <?php class Demo{ public $name; function sayHello(){ print "Hello $this->name!"; } } ``` 使用 ``` <?php require_once('class.Demo.php'); $objDemo = new Demo(); $objDemo->name='Steve'; $objAnotherDemo = new Demo(); $objAnotherDemo->name='Ed'; $objDemo->sayHello(); $objAnotherDemo->sayHello(); ``` 訪問該文件,字符串`Hello Steve!Hello Ed!`就出現在屏幕上! ### 4.保護對成員變量的訪問 正如前面的示例所示,可以將 name 屬性的值設置為任意所需要的數據——包括對象、整數數組、文件句柄或任何其他沒有意義的值 。但是,并不能在設置name屬性時執行任何形式的數據驗證或更新其他的值 。 為了解決該問題,必須以 `get[property name]` 和 `set[property name]`的函數形式來實現屬性。這些函數稱為`存儲器方法`,下面的示例演示了這些方法。 ``` <?php class Demo{ private $_name; public function sayHello(){ print "Hello ".$this->getName()."!"; } public function getName(){ return $this->_name; } public function setName($name){ if(!is_string($name) || strlen($name) == 0){ throw new Exception("Invalid name value!"); } $this->_name = $name; } } ``` 使用類 ``` <?php require_once('class.Demo.php'); $objDemo = new Demo(); $objDemo->setName('Steve'); $objDemo->sayHello(); $objDemo->setName(37); //would trigger an error ``` >name屬性的成員訪問級別已經由 public 變成了 private。下劃線是建議的命名約定! ### 5. 初始化對象 對于許多將要創建的類,需要在初次實例化該類的對象時執行一些特殊的設置。例如,可能需要從數據庫中獲取某些信息,或者是初始化某些屬性值 。通過創建一個`構造函數`的特殊方法可以執行實例化對象所需要的任何活動,該方法在PHP中是通過名為`_construct()`的函數來實現的。在實例化對象是時,PHP將自動調用這個特殊的函數。 ### 6.銷毀對象 當請求的頁面已經完成運行,或者創建的對象變量已經不在其作用域內,又或者變量被顯式地設置為 null 時,都需要從內存中移除該變量。 在PHP6中,可以在銷毀對象之前做一些處理工作,并且在銷毀發生時采取相應的操作。 為了實現這一點,創建一個不帶參數的、名為`__destruct`的函數。在銷毀對象之前就會自動調用該函數,前提是該函數存在! ## 1.3.2 繼承 利用繼承機制, 我們可以定義一個基類! ### 1. 重寫方法 重新寫方法以覆蓋方法 ### 2. 保留父類的功能 可以采用 `parent::[function name]` 這一關鍵字! 如: ``` parent::__contruct($customerID); ``` ### 3. 繼承的工作原理 書中采用 `某一個變量的true和false` 的形式,以繼承不同的類! ## 1.3.3 接口 ### 1. 接口的功能 接口可以指定某個對象能夠執行某種函數,但是它并不需要表明如何執行該函數。 接口是不相關的對象之間為了執行共有的函數而建立 起來的合同。 ### 2. 接口的工作原理 書中用實例來表示,有意者可看 25、26頁。 ## 1.3.4 封裝 書中講的其實就是業務的一些封裝!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看