<?php
namespace Knp\Component\Pager\Event\Subscriber\Paginate;
use ArrayObject;
use Knp\Component\Pager\Event\ItemsEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class ArraySubscriber implements EventSubscriberInterface
{
public function items(ItemsEvent $event): void
{
if (is_array($event->target)) {
$event->count = count($event->target);
$event->items = array_slice(
$event->target,
$event->getOffset(),
$event->getLimit()
);
$event->stopPropagation();
} elseif ($event->target instanceof ArrayObject) {
$event->count = $event->target->count();
$event->items = new ArrayObject(array_slice(
$event->target->getArrayCopy(),
$event->getOffset(),
$event->getLimit()
));
$event->stopPropagation();
}
}
public static function getSubscribedEvents(): array
{
return [
'knp_pager.items' => ['items', -1/* other data arrays should be analyzed first*/],
];
}
}