for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types = 1);
namespace Everlution\Navigation;
/**
* Class NavigationItem.
* @author Ivan Barlog <[email protected]>
*/
class NavigationItem implements Item
{
/** @var string */
private $uri;
private $label;
/** @var Item */
private $parent;
/** @var NavigationItem[] */
private $children = [];
public function __construct(string $uri, string $label, Item $parent = null, array $children = [])
$this->uri = $uri;
$this->label = $label;
$this->parent = $parent;
foreach ($children as $child) {
$this->addChild($child);
}
* @param Item $item
* @return NavigationItem
public function addChild(Item $item): NavigationItem
if (!$item instanceof NavigationItem) {
throw new \InvalidArgumentException(
sprintf("Item must be instance of %s'", NavigationItem::class)
);
$this->children[] = $item->setParent($this);
return $this;
* @return NavigationItem[]
public function getChildren(): array
return $this->children;
* @return string
public function getUri(): string
return $this->uri;
public function getLabel(): string
return $this->label;
* @param $parent
public function setParent($parent): NavigationItem
* @return Item
public function getParent(): Item
return $this->parent;