【发布时间】:2023-03-23 22:25:02
【问题描述】:
我有一个外部类,它有另一个类作为成员(遵循原则组合而不是继承)。现在我需要从内部类调用外部类的方法。
class Outer
{
var $inner;
__construct(Inner $inner) {
$this->inner = $inner;
}
function outerMethod();
}
class Inner
{
function innerMethod(){
// here I need to call outerMethod()
}
}
我认为这是在 Outer::__construct 中添加引用的解决方案:
$this->inner->outer = $this;
这允许我在 Inner::innerMethod 中像这样调用外部方法:
$this->outer->outerMethod();
这是一个好的解决方案还是有更好的选择?
【问题讨论】:
-
内部类调用外部类是否有特定原因?为什么不使用内部作为参数调用外部方法,以免创建循环依赖?
-
原因是:内部类是外部类的特化。有几个可能的类实现了 InnerInterface。外部类包含不变的方法,内部类包含专门化的特定方法。
标签: php oop composition