Поздняя статическая привязка | без изменения родительского класса с ключевым словом `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 в дочернем классе?

Другие вопросы по тегам