24haoche 发表于 2013-12-10 10:52:55

php 类中方法的调用

本帖最后由 24haoche 于 2013-12-10 10:55 编辑

<?php
class Test extends CAR_Controller{
   private $used_id;
   public function a(){
      $this->usedr_id='aaaaa';
      echo $this->used_id;
   }
   public function b(){
      $c=$this->usedcar_id;
       echo $c;
   }
   public function c(){
       $this->a();
       $c=$this->usedcar_id;
       echo $c;
   }
}
?>
http://localhost/index.php/test/a结果为aaaaa
http://localhost/index.php/test/c结果为aaaaa
浏览器查看http://localhost/index.php/test/a然后查看http://localhost/index.php/test/b没有输出结果
先执行a函数已经对$used_id付过值了,b函数再输出$used_id值,为什么不输出呢?必须如c函数一样调用a一次才可以输出。

24haoche 发表于 2013-12-11 08:14:26

这么难的问题还是自己回答吧(偷笑中)。
先执行a函数已经对$used_id付过值了,b函数再输出$used_id值,为什么不输出呢?这种思维成立的前提必须是:$f=new Test();$f->a();$f->b();要先呢呢new一个test的对象。对象调用a方法此时对变量赋值并分配内存给变量,变量的值得到保存。然后在调用b方法则可以输出。如果在类内部,通过$this来调用虽然浏览器找到了Test控制器的a方法,并运行成功。变量的值在a运行结束是就没有了,相当于a的内部变量了,因为没有new一个对象,所以类的字段(或者属性)没有内存空间保存值。-----》这是个人的理解。不对之处还请指出
页: [1]
查看完整版本: php 类中方法的调用