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
【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.
97 0
【laravel报错】You don‘t have permission to access /laravel/public/index.php on this server.
|
PHP
***PHP类型转换实例:$this->input->get()返回的结果是字符串类型(数字字符串转数字)
一个GET的REST API,请求有三个参数,且都是数字 用$this->input->get()方法获取后的结果是字符串,需要转换为数字;如果没有获取到数据,则会返回false,需要用empty判断 可以用:int=intval($str);  -----------------------...
1130 0
|
Linux PHP Apache
apache 提示You don't have permission to access /test.php on this server.怎样解决
原文:apache 提示You don't have permission to access /test.php on this server.怎样解决 关键字: Apache   403  Forbidden系统配置:操作系统:Red Hat Linux 6.2Web服务器:Apache 3.1.1+jakarta-tomcat 3.1.1数据库服务器:oracle 8i    Apache服务器是目前应用最多的web服务器,据统计在世界上的服务器中有超过一半采用Apache服务器.关于它的好处,您可以自己到http://www.apache.org/上去看。
1880 0