Назад к вопросам
Junior — Middle
89
Что произойдет, если в подклассе обратиться к методу, который не определен в нем, через вызов с помощью self::?
Компании, где спрашивали
Tilda
Ответ от нейросети
sobes.tech AI
В PHP ключевое слово self:: всегда ссылается на класс, в котором оно написано, а не на класс потомка. Если в подклассе вызвать метод через self::, который не определён в самом подклассе, а определён в родительском классе, то PHP попытается найти этот метод именно в подклассе и не найдёт его, что приведёт к ошибке.
Пример:
class ParentClass {
public static function foo() {
echo "Parent foo";
}
}
class ChildClass extends ParentClass {
public static function bar() {
self::foo(); // Попытка вызвать foo() через self:: в ChildClass
}
}
ChildClass::bar(); // Ошибка: Call to undefined method ChildClass::foo()
Чтобы вызвать метод родительского класса, нужно использовать parent::foo() или static::foo(), если требуется позднее статическое связывание.