如果我有这样的课程:
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?
答案 0 :(得分:1)
将class1中的doSomething方法修复为:
public function doSomething($value, class2 $object){
$object->setAVariable($value);
}
没关系。但是,您的示例不起作用,但我认为它输入错误。
答案 1 :(得分:0)
不,因为$object1
中的class1:doSomething()
未定义。如果你在那里使用$object
,它会起作用,因为doSomething()
会调用$object->setAVariable()
,在这种情况下是同一个对象,例如来自外部范围的$object2
(你将该对象赋予doSomethig()
)。