Sobes.tech
Back to questions
Junior — Middle
88

Что произойдет, если в подклассе обратиться к методу, который не определен в нем, через вызов с помощью self::?

Companies where asked
Tilda

Answer from AI

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(), если требуется позднее статическое связывание.