<?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 analized first*/], 
        ]; 
    } 
}