Поздняя статическая привязка | без изменения родительского класса с ключевым словом `static`
У меня есть следующий родительский и дочерний класс.
class Parent_class {
protected static function method_one() {
echo "I am in Parent_class in method_one";
}
protected function execute() {
static::method_one();
}
public function start() {
$this->execute();
}
}
class Child_class extends Parent_class {
protected static function method_one() {
echo "I am in Child_class in method_one";
}
}
$obj = new Child_class();
$obj->start();
Result - it is calling Child class method.
Результат, как и ожидалось, из-за статического позднего связывания поддерживается в php5.3 с уже зарезервированным ключевым словом static
,
Но проблема в том, что у меня нет прав на запись в родительский класс, поэтому я не могу использовать static
во время звонка methode_one
и, следовательно, он не выполняет позднюю статическую привязку.
Есть ли выход, используя который я могу получить доступ к переопределяющему методу?
Родительский класс - это определенная библиотека, и я не могу ее изменить.
Выход в том, чтобы изменить родительский класс или полностью отказаться от этой мысли, но можете ли вы предложить какую-либо другую альтернативу?
1 ответ
Почему бы не реализовать execute или start в дочернем классе?