Ответ
При вызове static::отсутствующийМетод() PHP попытается разрешить вызов метода, используя позднее статическое связывание. Это означает, что поиск метода начнется с класса, на который указывает static (обычно это класс, из которого был сделан вызов), и будет подниматься по цепочке наследования. Если метод не будет найден ни в текущем классе, ни в его родителях, будет выброшена фатальная ошибка.
Пример на PHP:
class ParentClass {
public static function test() {
// static ссылается на класс, который вызвал test()
static::missingMethod(); // Ищет missingMethod в вызывающем классе
}
}
class ChildClass extends ParentClass {}
ChildClass::test();
// Вывод: Fatal error: Uncaught Error: Call to undefined method ChildClass::missingMethod()
Практический совет: Перед вызовом через static:: стоит проверять существование метода:
if (method_exists(static::class, 'methodName')) {
static::methodName();
}