Передача дочернего класса -- Recoverable Error

brone

Новичок
Есть такой код:

PHP:
class SomeClass {
    public static function execute(Request $request)
    {
    ...
    }
}

class Request_Child extends Request {}

$request = new Request_Child();

SomeClass::execute($request);
Получаю ошибку:

ErrorException [ Recoverable Error ]: Argument 1 passed to SomeClass::execute() must be an instance of Request, instance of Request_Child given
Почему так? В PHP настолько строгая типизация параметров, что дочерний класс уже не прокатит?
 

Духовность™

Продвинутый новичок
brone
какая версия языка? У меня на 5.3 этот код работает:

PHP:
class Request{}

class SomeClass {
    public static function execute(Request $request){}
}

class Request_Child extends Request {}

$request = new Request_Child();

SomeClass::execute($request);
 

no_santa

Снегур
Простите за возможно некорретный вопрос, но почему вы не обращаетесь к методу объекта?

Вызов "метода класса" - это как-то... ну я не знаю, как сказать... не академично?
 

weregod

unserializer
Простите за возможно некорретный вопрос, но почему вы не обращаетесь к методу объекта?

Вызов "метода класса" - это как-то... ну я не знаю, как сказать... не академично?
но есть один ньюанс: описываются методы классов, причём в контексте обращения к статическому методу годно "обращение к методу класса"
 

tz-lom

Продвинутый новичок
ErrorException [ Recoverable Error ]: Argument 1 passed to SomeClass::execute() must be an instance of Request, instance of Request_Child given
мне кажется что ошибка от PHP выглядит не так,она fatal error и не exception , может быть у вас принудительно она выкидывается кодом ?
или это у вас такое выдаёт перехватчик ошибок?
 
Сверху