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

相关文章
|
PHP 数据安全/隐私保护
php-面向对象OOP
php-面向对象OOP
68 0
|
PHP
【laravel报错】You don‘t have permission to access /laravel/public/index.php on this server.
【laravel报错】You don‘t have permission to access /laravel/public/index.php on this server.
106 0
【laravel报错】You don‘t have permission to access /laravel/public/index.php on this server.