Задать вопрос
@phpcoder81

Как соединить методы вывода и методы сортировки?

Необходимо это
foreach($product_collection->getAll() as $v){
  //...
}

заменить на
foreach($product_collection->getAll()->sortByName() as $v){
  //...
}


Никак не разберусь, как такую конструкцию реализовать внутри объекта.
Метод getAll() возвращает все объекты, а сортировка по задумке должна применяться к полученным объетам.
На ум пришло только
$product_collection->getData()->sortByName()->getAllObj();
//или
$product_collection->sortByName()->getAll();

А как сделать на моём примере?
  • Вопрос задан
  • 79 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
mad_maximus
@mad_maximus
Чтобы вызывать методы по цепочке, вам нужно вернуть из метода $this, если метод находится внутри данного класса, или вернуть какой-нибудь объект (например, return new SortClass()).

public function getAll()
{
   // code
   return new ArrayCollection($posts);
}

...

class ArrayCollection
{
    private $collection;
    
    public function __construct($collection)
    {
         $this->collection = $collection;
    }
   
    public function sortByName()
    {
        return array_filter($this->collection, function(){});
    }
}


Как-то так.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽