面向对象上下文的对象问题

时间:2011-05-10 09:21:04

标签: php oop

如果我有这样的课程:

class1{
  public function doSomething($value, class2 $object){
    $object->setAVariable($value);
  }
}

class2{
  protected $AVariable;

  public setAVariable($value){
    $this->AVariable = $value;
    return $this->AVariable;
  }

  public getAVariable(){
    return $this->AVariable;
  }
}

在test.php中:

$object2 = new class2();
$object1 = new class1();
$value = 12;
$object1->doSomething(12, $object2);

问题:

仍然在test.php中,我可以像这样访问$ value:

echo $object2->getAVariable();

会返回12?

2 个答案:

答案 0 :(得分:1)

将class1中的doSomething方法修复为:

  public function doSomething($value, class2 $object){
    $object->setAVariable($value);
  }

没关系。但是,您的示例不起作用,但我认为它输入错误。

答案 1 :(得分:0)

不,因为$object1中的class1:doSomething()未定义。如果你在那里使用$object,它会起作用,因为doSomething()会调用$object->setAVariable(),在这种情况下是同一个对象,例如来自外部范围的$object2(你将该对象赋予doSomethig())。