-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBuilder.php
More file actions
48 lines (39 loc) · 1.17 KB
/
Builder.php
File metadata and controls
48 lines (39 loc) · 1.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
declare(strict_types=1);
/*
* CoreShop
*
* This source file is available under the terms of the
* CoreShop Commercial License (CCL)
* Full copyright and license information is available in
* LICENSE.md which is distributed with this source code.
*
* @copyright Copyright (c) CoreShop GmbH (https://www.coreshop.com)
* @license CoreShop Commercial License (CCL)
*
*/
namespace CoreShop\Bundle\MenuBundle;
use CoreShop\Bundle\MenuBundle\Builder\MenuBuilderInterface;
use CoreShop\Component\Registry\ServiceRegistryInterface;
use Knp\Menu\FactoryInterface;
use Knp\Menu\ItemInterface;
class Builder
{
public function __construct(
protected FactoryInterface $factory,
protected string $type,
protected ServiceRegistryInterface $registry,
) {
}
public function createMenu(): ItemInterface
{
$menu = $this->factory->createItem($this->type);
foreach ($this->registry->all() as $menuBuilder) {
if (!$menuBuilder instanceof MenuBuilderInterface) {
continue;
}
$menuBuilder->buildMenu($menu, $this->factory, $this->type);
}
return $menu;
}
}