hyperf-view/builder/Entity/MenuEntity.php

78 lines
1.5 KiB
PHP

<?php
declare(strict_types=1);
namespace Builder\Entity;
class MenuEntity
{
/**
* @var MenuItemEntity[]
*/
public $menus;
public function __construct($menus)
{
$menus = (array)$menus;
foreach ($menus as $menu) {
$this->setMenus($menu);
}
}
/**
* @return MenuItemEntity[]
*/
public function getMenus()
{
return $this->menus;
}
/**
* @return array
*/
public function toArray()
{
$menus = [];
foreach ($this->menus as $menu) {
$menus[] = $menu->toArray();
}
return $menus;
}
/**
* @return array
*/
public function toMenuList()
{
$menus = [];
foreach ($this->menus as $menu) {
$this->getItem($menu, $menus);
}
return $menus;
}
private function getItem(MenuItemEntity $menu, &$menus)
{
$menus[] = [
'title' => $menu->getTitle(),
'uri' => $menu->getUri(),
'route' => $menu->getRoute()
];
foreach ($menu->getChildren() as $child) {
$this->getItem($child, $menus);
}
return $menus;
}
public function addMenu(MenuItemEntity $menuItemEntity)
{
$this->menus[] = $menuItemEntity;
}
/**
* @param mixed $menus
*/
public function setMenus($menus): void
{
$this->menus[] = new MenuItemEntity($menus);
}
}