У меня есть внешний класс, который имеет другой класс в качестве члена (следуя основному составу над наследованием). Теперь мне нужно вызвать метод внешнего класса из класса внутри.Класс композиции - вызов внешнего метода из внутреннего класса
class Outer
{
var $inner;
__construct(Inner $inner) {
$this->inner = $inner;
}
function outerMethod();
}
class Inner
{
function innerMethod(){
// here I need to call outerMethod()
}
}
Я вижу, как решение, чтобы добавить ссылку в Outer :: __ конструкция:
$this->inner->outer = $this;
Это позволяет мне называть внешний метод, как это в Inner :: innerMethod:
$this->outer->outerMethod();
Это хорошее решение или есть лучшая альтернатива?
Есть ли конкретная причина для внутреннего класса, вызывающего внешний? Почему бы не вызвать вызов внешнего метода с внутренним параметром, чтобы не создавать циклические зависимости? –
Причина: внутренний класс является специализацией внешнего. Существует несколько возможных классов, которые реализуют InnerInterface. Внешний класс содержит неизменные методы, а внутренний класс содержит специальные методы специализации. –