Ошибка совместимости типов при передаче подкласса в метод интерфейса PHPPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Ошибка совместимости типов при передаче подкласса в метод интерфейса PHP

Сообщение Anonymous »

Почему я получаю ошибку совместимости типов в PHP, когда пытаюсь передать объект класса RegisterRequest, который наследуется от BaseRequest, методу интерфейса, который ожидает объект типа BaseRequest.

Код: Выделить всё

interface RequestDecoderInterface
{
public function decode(BaseRequest $request): AbstractParams;
}

class RegisterRequestDecoder implements RequestDecoderInterface
{
public function decode(RegisterRequest $request): RegisterParams
{
return new RegisterParams(
$request->email,
$request->firstName,
$request->lastName,
$request->password,
$request->secondName,
$request->address,
$request->phoneNumber,
$request->gender,
new \DateTime($request->birthday),
$request->avatar
);
}
}

class RegisterRequest extends BaseRequest
{
...
Ошибка: объявление должно быть совместимо с RequestDecoderInterface->decode(request: \App\Shared\BaseRequest)

Подробнее здесь: https://stackoverflow.com/questions/791 ... ace-method
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»