for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace Everlution\Navigation;
use Everlution\Navigation\Item\ItemInterface;
use Everlution\Navigation\Item\SortableInterface;
/**
* Class OrderedContainer.
*
* @author Ivan Barlog <[email protected]>
*/
class OrderedContainer implements ContainerInterface
{
/** @var ContainerInterface */
private $container;
/** @var ItemInterface[] */
private $items;
public function __construct(ContainerInterface $container)
$this->container = $container;
}
* @return ItemInterface[]
public function getItems(): array
if (empty($this->items)) {
$this->items = $this->container->getItems();
uasort($this->items, function($a, $b) {
if (!($a instanceof SortableInterface && $b instanceof SortableInterface)) {
return 0;
return $a->getOrder() <=> $b->getOrder();
});
return $this->items;
public function get(string $identifier): ItemInterface
return $this->items[$identifier];