@springimport

Как отсортировать и разрезать коллекцию?

Есть коллекция:
interface CollectionInterface extends \IteratorAggregate, \Countable, \ArrayAccess

class Collection implements CollectionInterface {
    // ...

    public function getIterator()
    {
        return new \ArrayIterator($this->items);
    }

    // ...
}


Пишу код который должен отсортировать и разрезать коллекцию.
Простые функции нельзя применить к объекту, поэтому придумал такой вариант:
/** @var Collection $orders */

$orders->getIterator()->uasort(function ($a, $b) ...

$ordersItems = array_slice($orders->getIterator()->getArrayCopy(), $offset, $limit);
$orders->getIterator()->__construct($ordersItems);


Но не работает. Думаю что из-за того что значения не передаются по ссылке. Как написать правильно?
  • Вопрос задан
  • 43 просмотра
Пригласить эксперта
Ответы на вопрос 1
@StApostol
class Collection implements CollectionInterface
{
    // ...

    public function slice(int $offset, int $limit): self
    {
        $this->items = array_slice($this->items, $offset, $limit);

        return $this;
    }

    public function getIterator()
    {
        return new \ArrayIterator($this->items);
    }

    // ...
}


Сортировку тоже внутри класса реализовать можно
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽