Рассмотрим этот случай, у меня есть абстрактный класс, дети которого берут план и выполняют с ним различные действия.Теперь у меня есть несколько классов, которые расширяют это и выполняют немного разные действия с планом, поэтому у меня есть расширенные версии указанного плана, которые мне нужны для каждого дочернего класса.
Как таковой, я хочу определить /подсказка type свойство или соответствующее свойство input функции в абстрактном классе как любое, а затем укажите тип свойства в каждом из дочерних классов.
Но я не могу этого сделать, потому что PHP 7 выдает мне ошибку
Declaration B::setBlueprint() must be compatible with A::setBlueprint()
Классы чертежей
class Blueprint {
public $id;
}
class ChildBlueprint extends ParentBlueprint {
public $someOtherPropINeedOnlyInThisClass;
}
и абстрактные классы, которые используют эти чертежи
abstract class A {
abstract public function setBlueprint( ParentBlueprint $_ );
}
class B extends A {
public function setBlueprint( ChildBlueprint $_ ) {}
}
Я имею в виду, что мне нужен план, полученный из всех классов A, B, C, ..., X, Y, и поэтому нет смысла оставлять его вне абстрактногокласс.
Каковы хорошие решения ООП для этой проблемы?