Есть класс с методами
class Test {
public function m1() {
}
public function m2() {
}
}
Есть наследник:
class randomName extends Test {
/*
public function m1() {
}
public function m2() {
}
*/
public function m111() {
}
public function m222() {
}
}
Прошу заметить, что в наследнике сейчас закоменчены методы родителя.
Вопрос: можно ли как-то проверить, что те самые методы не активны? Я хочу это для того, чтобы если не активны (закоменчены или вообще отсутсвуют), т вызвать методы m111 или m222 соответствнно.
Классы рефлексии, is_callable и method_exists не помогают это выявить достоверно. Либо я не понимаю как.
Нашел путь решения на enSO.
$reflector = new \ReflectionMethod($ob, 'createTable');
$isProto = ($reflector->getDeclaringClass()->getName() !== get_class($ob));
Суть в чем: проверяется наличие метода createTable в объекте $ob, далее сравнивается имя класса, в котором объявлен метод $reflector->getDeclaringClass()->getName() и имя текущего объекта get_class($ob). Если они совпадают - то значит метод был переопределен, если нет - значит нет (значит например был закоментирован или просто не переопределен)
Сборка персонального компьютера от Artline: умный выбор для современных пользователей