@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);
    }

    // ...
}


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

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

Похожие вопросы