Как правильно указать типа параметр при имплементации интерфейса в PHP? Задался вопросом почему объект класса не совместим с типом object. Пример ниже:interface ExtractorInterface
{
/**
* @param object $object
* @return array
*/
public function extract(object $object);
}
class MyObjectExtractor implements ExtractorInterface
{
/**
* @param MyObject $object
* @return array
*/
public function extract(MyObject $object)
{
return [
'a' => $object->a,
];
}
}
class MyObject
{
public $a;
}
Есть вариант не указывать тип и делать проверку внутри метода. Ещё менее надежный метод не указывать тип вообще.
Как правильно использовать типизацию? Или может быть не использовать?

21 Авг 2019 в 06:59
138 +1
0
Ответы
1

В данном случае, вы можете использовать интерфейс для типизации параметра, чтобы объект класса, который вы используете для имплементации интерфейса, соответствовал типу параметра, указанному в интерфейсе.

Измените интерфейс ExtractorInterface следующим образом:

interface ExtractorInterface
{
/**
* @param MyObject $object
* @return array
*/
public function extract(MyObject $object);
}

Теперь, когда вы имплементируете интерфейс в классе MyObjectExtractor, вы можете использовать тип MyObject для параметра метода extract:

class MyObjectExtractor implements ExtractorInterface
{
/**
* @param MyObject $object
* @return array
*/
public function extract(MyObject $object)
{
return [
'a' => $object->a,
];
}
}

Таким образом, при использовании интерфейса и правильной типизации параметров, вы сможете убедиться, что объект, переданный в метод, соответствует ожидаемому типу, что делает код более надежным и предсказуемым.

20 Апр в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 829 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир