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

Кемеровские программисты 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

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