<?php namespace Modules\Menu\MegaMenu; use Modules\Category\Entities\Category; class SubMenu { private $subMenu; private $subMenuItems; public function __construct($subMenu) { $this->subMenu = $subMenu; } public function url() { return $this->subMenu->url(); } public function target() { if ($this->subMenu instanceof Category) { return '_self'; } return $this->subMenu->target; } public function name() { return $this->subMenu->name; } public function hasItems() { return $this->items()->isNotEmpty(); } public function items() { if (! is_null($this->subMenuItems)) { return $this->subMenuItems; } return $this->subMenuItems = $this->subMenu->items->map(function ($item) { return new SubMenu($item); }); } }