我有2个课程,Beer
和Ingredient
。
我的班级Beer
有一个名为$ingredients
的属性,它是一个Ingredient
个对象的数组。
如果有一种方法可以在我的Ingredient
类中确定此对象是否由 hand 实例化,或者属于$ingredients
的{{1}}属性}?
答案 0 :(得分:0)
没有隐式方法。发生这种情况时,您必须通知实例。
见这个例子:
class Beer{
private $ingredients = [];
public function addIngredient(Ingredient $ing){
$this->ingredients[] = $ing;
$ing->setOwner($this);
}
}
class Ingredient{
private $owner;
public function getOwner(){
return $this->owner;
}
public function setOwner($owner){
$this->owner = $owner;
}
public function hasOwner() : bool{
return isset($this->owner);
}
}
现在,您可以使用Ingredient
检查Beer
中是否使用了$ingredient->hasOwner()
的实例。