使用observer的PHP对象组合?

使用observer的PHP对象组合?,php,object,composition,observers,Php,Object,Composition,Observers,如果我的术语不正确,请原谅。。。(因为可能是这样) 假设我正在使用合成,我的高级对象类似于: abstract child { /* array of Activity objects */ public $activities; abstract function punish() {} } favoriteChild extends child { function punish() { // Have a talk } } re

如果我的术语不正确,请原谅。。。(因为可能是这样)

假设我正在使用合成,我的高级对象类似于:

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
由更多的对象组成,其中一个是
从jar
窃取CookiesFromjar


如何从
StealingCookiesFromJar
对象内部调用具体的子方法
Premist
?(我不熟悉观察者……这是我应该在这里学习的吗?

你需要一个具体的孩子在偷CookiesFromjar对象中。创建或将其传递到方法中

 class StealingCookiesFromJar{
    function doSomething(){
      $child = new redHeadedStepChild();
      $child->punish();
     }
  }


当您这样调用子类时,有时您会传入
$this
,并在方法定义中调用它
$invoker
。这样,
从jar中窃取Cookies
就可以访问调用类(在本例中是
redHeadedStepChild
)。但是,严格地说,如果您遵循观察者模式,观察类不应该需要这些信息。
 class StealingCookiesFromJar{
    function doSomething(redHeadedStepChild $child){
       $child->punish();
    }
  }