类子函数未更改公共变量

时间:2017-02-08 12:56:37

标签: php variables scope

上课:

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

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

1 个答案:

答案 0 :(得分:1)

如果您首先调用返回C的{​​{1}}类A方法,现在将其作为方法C() contains:中的$param传递,现在为{{1} }}有值B,但您只是回显$test hello,因此它只打印$param以打印您需要的C() contains: < / p>