用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4363|回复: 1
收起左侧

[讨论/交流] php 类中方法的调用

[复制链接]
发表于 2013-12-10 10:52:55 | 显示全部楼层 |阅读模式
本帖最后由 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一次才可以输出。
 楼主| 发表于 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一个对象,所以类的字段(或者属性)没有内存空间保存值。-----》这是个人的理解。不对之处还请指出

本版积分规则