PHP5的OOP–$this引用

技術小胖子發表於2017-11-15
$this一般指向呼叫物件
 
程式碼如下
 
<?php 

//$this 引用 

class A 



        function foo() 

        { 

                if (isset($this)) { 

                        echo `$this已經定義:類 (`; 

                        echo get_class($this); 

                        echo “)<br/>“; 

                } else { 

                        echo “$this沒有定義.<br/>“; 

                } 

        } 




class B 



        function bar() 

        { 

                A::foo(); 

        } 




$a = new A(); 

$a->foo();//$this已經定義:類 (A) 

A::foo();//$this沒有定義. 

$b = new B(); 

$b->bar();//$this已經定義:類 (B) 

B::bar();//$this沒有定義. 

?>
 
可以看出A的例項物件通過$a->foo()方式呼叫時,$this就指向了這個呼叫物件。
 
但是通過靜態呼叫A::foo()不存在例項化情況,所有沒有$this.
 
接著在$b->bar()的呼叫中,有個靜態呼叫A::foo()這時$this指向了上下文中的物件$b.
 
於是下面的這個程式碼的執行結果很顯然了。
 
<?php 

class A 



  var $hello=”Hello”; 

  function aa() 

  { 

  echo $this->hello; 

  } 




class B 



  var $hello=”你好”; 

  function bb() 

  { 

         A::aa(); 

  } 




$b1=new B(); 

$b1->bb(); 

?>
 
本文轉自 xcf007 51CTO部落格,原文連結:http://blog.51cto.com/xcf007/106081,如需轉載請自行聯絡原作者


相關文章