【发布时间】:2017-02-08 12:56:36
【问题描述】:
参加这门课:
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 变量吗?
【问题讨论】:
-
请注意,
C被调用之前B,所以值在最后被设置。 -
C如何将值返回给B之前B设置值...? 认知失调加剧 -
我的糟糕,糟糕的早晨。谢谢。
-
我还以为我今天早上过得不好……
-
@deceze :) 你认为你可以取消保留吗?因为我确实提出了期望的和实际的行为。我认为这可能是一个被其他人看到的有效陷阱。因为如果可以的话,我仍然会对任何使之成为可能的方式感兴趣。有点谜。