<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>

                ## 普通方法與靜態方法調用區別 >[info] 類中的普通方法與靜態方法,看似簡單,實則復雜,有時讓人匪夷所思~~ #### 1. 普通方法 * 創建類Demo,并定義一個公共普通方法:test1( ) * 調用語法: ~~~ //1. 創建對象 對象變量名 = new 類名 ; //2 調用方法 對象變量 -> 普通方法() ; 例如: $obj = new Demo(); echo $obj -> test2(); ~~~ >[info] 也可以將調用普通方法的二步合并為一步: ~~~ (new 類名) -> 普通方法(); 例如: (new Demo) -> test2(); ~~~ * 演示源碼如下: ~~~ <?php class Demo{ //定義公共普通方法 public function test1(){ return 'Nomal method:test1'; } } //1.創建對象 $obj = new Demo(); //2.用對象來調用普通方法 echo $obj -> test1(); ~~~ * 運行結果: ~~~ Nomal method:test1 ~~~ * * * * * #### 2. 靜態方法(static) * 創建類Demo,并定義一個公共靜態方法:test2( ) * 調用語法: ~~~ 類名::靜態方法名(參數列表) ; 例如: Demo::test2(); ~~~ * 演示源碼如下: ~~~ <?php class Demo{ //定義公共靜態方法 public static function test2(){ return 'Static method:test2'; } } //Demo類靜態方法test2()調用 echo Demo::test2(); ~~~ * 運行結果: ~~~ Static method:test2 ~~~ >[warning] 注意:靜態方法也可以像普通方法一樣:用對象來調用,但不推薦這樣做 * 例如,這樣調用靜態方法也是可以的: ~~~ $obj = new Demo(); echo $obj -> test2(); //test2()是靜態方法 或者: echo (new Demo) -> test2(); ~~~ * 運行結果與使用:類::靜態方法名()調用是一樣的。 * * * * * #### 3. 普通方法中調用靜態方法 >[info] 靜態方法是所有對象所共享的,而普通方法是所有對象都可以調用的。所以,普通方法中調用靜態方法是可以的。 * 演示源碼: ~~~ <?php class Demo{ //定義公共普通方法 public function test1(){ //調用靜態方法:test2() return self::test2(); } //定義公共靜態方法 public static function test2(){ return 'Static method:test2'; } } //創建Demo類對象并調用普通方法test1() echo (new Demo) -> test1(); ~~~ * 演示代碼說明: (1): 因靜態方法可以像普通方法一樣訪問,所以也可以這樣調用靜態方法: ~~~ public function test1(){ //調用靜態方法,不用self::test2() ,用$this -> test2() return $this -> test2(); } ~~~ (2): 創建對象與方法調用合并,好處就是省去了定義對象變量名。 >[info] 定義變量名稱,是一件很痛苦的事,寫代碼越多越感有感觸 ~~~ //創建Demo類對象并調用普通方法test1() echo (new Demo) -> test1(); ~~~ * * * * * #### 4. 靜態方法中調用普通方法 >[info] 普通方法中可以訪問靜態方法,那么反過來是否成立呢? * 讓我們來測試一下吧~~ * 現在我們修改一下源代碼: ~~~ <?php class Demo{ //定義公共普通方法 public function test1(){ return 'Nomal method:test1'; } //定義公共靜態方法 public static function test2(){ return $this -> test1(); } } //Demo類調用靜態方法test2() echo Demo::test2(); ~~~ * 運行結果:出錯啦!!! ~~~ Fatal error: Using $this when not in object context in 'php文件名'. ~~~ >[danger] 靜態方法是屬于類的,供所有該類的對象所共享。而普通方法是屬于對象的。靜態方法生成于編譯前,這時對象未生成,因為通過對象訪問的普通方法,當然也不能被訪問! * 我們現在思考一個問題:靜態方法中能否訪問普通屬性?答案是:不能!原因與這個相同。 * * * * * #### 5. 靜態屬性的訪問 >[info] 靜態方法中,只能訪問靜態屬性,不能訪問普通屬性。但是普通方法中可以訪問靜態屬性,這也上面介紹的:普通訪問中可以訪問靜態方法的原理是一樣的。 * 實例演示: ~~~ <?php class Demo{ public static $name = 'ThinkPHP'; //定義公共普通方法 public function test1(){ return self::$name; } //定義公共靜態方法 public static function test2(){ return self::$name; } } //對象訪問 echo (new Demo) -> test1(); // 返回:ThinkPHP echo (new Demo) -> name; // 返回:錯誤 //靜態訪問 echo Demo::test2(); // 返回:ThinkPHP echo Demo::$name; // 返回:ThinkPHP ~~~ >[danger] 盡管我們可以像調用普通方法一樣,用對象調用靜態方法,但卻不能調用靜態屬性,一定要注意! * * * * * ### 總結: * 普通方法與靜態方法的盡管寫在一個類中,但卻工作在不同的空間; * 普通方法可以訪問靜態方法,但反過就不行; * 靜態屬性必須靜態訪問,但靜態方法除了靜態訪問外,也可以對象訪問。
                  <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>

                              哎呀哎呀视频在线观看