PHP5的OOP--$this引用

$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,如需转载请自行联系原作者

上一篇:企业物联网平台新版公共实例升级企业实例教程


下一篇:阿里云城市服务商分享怎么使用DTS迁移PPAS数据