对不起,如果我的术语看起来不正确......(因为它可能是)
假设我正在使用合成,我的更高级别的对象就像:
abstract child
{
/* array of Activity objects */
public $activities;
abstract function punish() {}
}
favoriteChild extends child
{
function punish() {
// Have a talk
}
}
redHeadedStepChild extends child
{
function punish() {
// Beat with wrench
}
}
现在让我们说$activities
由更多对象组成,其中一个是StealingCookiesFromJar
。
如何从punish
对象中调用具体的子方法StealingCookiesFromJar
? (我对观察者不熟悉......我应该在这里学习什么?)
答案 0 :(得分:0)
你需要在StealingCookiesFromJar对象中有一个具体的孩子。创建它或将其传递给方法
class StealingCookiesFromJar{
function doSomething(){
$child = new redHeadedStepChild();
$child->punish();
}
}
或
class StealingCookiesFromJar{
function doSomething(redHeadedStepChild $child){
$child->punish();
}
}