Как добавить метод к классу если переопределить класс нельзя? разные сервисы приложения возвращают обьекты разных типов
$searchResults
$someOtherResults
$arrayOfValueObjects
если нет возможности переопределить их, как сделать чтоб можно было их "привести к общему знаменателю"foreach(array_merge($searchResults, $someOtherResults, $arrayOfValueObjects) as $item) {
$item->render();
}

21 Авг 2019 в 07:03
150 +1
0
Ответы
1

Если у вас нет возможности переопределить классы или добавить метод к классу, можно использовать интерфейсы. Создайте интерфейс с нужным методом render() и заставьте каждый из ваших классов реализовывать этот интерфейс.

Пример:

interface Renderable {
public function render();
}
class SearchResult implements Renderable {
public function render() {
// Ваш код для отображения результата поиска
}
}
class SomeOtherResult implements Renderable {
public function render() {
// Ваш код для отображения другого результата
}
}
class ValueObject implements Renderable {
public function render() {
// Ваш код для отображения значения объекта
}
}
$searchResults = [new SearchResult(), new SearchResult()]; // Пример обьектов результатов поиска
$someOtherResults = [new SomeOtherResult(), new SomeOtherResult()]; // Пример других результатов
$arrayOfValueObjects = [new ValueObject(), new ValueObject()]; // Пример массива объектов значения
foreach(array_merge($searchResults, $someOtherResults, $arrayOfValueObjects) as $item) {
$item->render();
}

Теперь вы можете обращаться к методу render() у каждого из этих классов, несмотря на то, что они разные по типу.

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