2017-02-08 39 views
-1

借此类:公共变量没有改变类子功能

class A{ 
    public $test = ''; 

    public function B($param){ 
    $this->test = 'hello'; 
    echo $param; 
    } 

    public function C(){ 
    return "C() contains:" . $this->test; 
    } 
} 

如果我把它这样,通过C的输出转换成B:

$obj = new A; 
$obj->B($obj->C()); 

我得到这样的输出:

C() contains: 

我想它来打印下面,因为B已经设置$test为hello:

C() contains:hello 

为什么设置的对象在B()公共$test变量不改变值,孩子函数调用C()得到?他们是不是都访问相同的$obj->test变量?

+1

请注意''''在*'B'之前被调用*,因此该值被设置在最后。 – Rizier123

+0

*'B'设置值之前,'C'如何将值返回给'B' *? *认知失调加剧* – deceze

+0

我的不好,早上不好。谢谢。 –

回答

1

如果你第一个电话A类返回C() contains:,现在你在方法B通过这为$param,现在$test具有价值hello,但你只是呼应$param这是C() contains:C方法,因此将只打印C() contains:列印您需要的结果echo $param, $this->test