PHP Child&中的基本继承家长班

时间:2015-06-02 14:26:32

标签: php web-services class oop inheritance

好吧,我可能只是把头脑中的事情搞得一团糟或者完全遗漏了一些东西;但我不太确定。

我有一个名为Opportunity的类以及一个名为Activity的类。

机会将伴随许多活动。

没有理由为什么活动需要访问机会方法/属性,因为活动是机会之间的一对多关系,是一个完全不同的对象而不是机会。但是,如果没有与机会相关联,活动就不可能存在。

这是儿童父母关系还是活动需要扩展商机类?

继承如何与此示例一起使用?

2 个答案:

答案 0 :(得分:2)

您在谈论Composite pattern,您的班级Opportunity由一个或多个Activities组成。

  

这是子父关系还是活动需要扩展   机会班?

不是子父关系,因为它们之间没有层次结构,Activities不需要使用或重新实现任何Opportunity方法或属性。活动只是机会的一部分。所以不,Activity不需要扩展商机类。

答案 1 :(得分:1)

您不必将它们作为亲子关系。事实上,如果有的话,听起来你需要dependency injection而不是

class Activity {
    /** @var \Opportunity */
    protected $opportunity;

    public function __construct(\Opportunity $opportunity) {
        $this->opportunity = $opportunity;
    }

    public function run() {
        $this->opportunity->doSomething();
    }
}
$activity = new \Activity($opportunity); // Pass an instance of Opportunity here

这样,您必须让Opportunity班级和Activity有权访问,但它只能使用所需的方法。不用担心遗产。