Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Config.php
Go to the documentation of this file.
1 <?php
7 
13 class Config
14 {
15  const CACHE_ID = 'backend_menu_config';
16 
17  const CACHE_MENU_OBJECT = 'backend_menu_object';
18 
22  protected $_configCacheType;
23 
27  protected $_eventManager;
28 
32  protected $_menuFactory;
33 
39  protected $_menu;
40 
44  protected $_logger;
45 
49  protected $_configReader;
50 
54  protected $_scopeConfig;
55 
59  protected $_director;
60 
64  protected $_appState;
65 
77  public function __construct(
78  \Magento\Backend\Model\Menu\Builder $menuBuilder,
79  \Magento\Backend\Model\Menu\AbstractDirector $menuDirector,
80  \Magento\Backend\Model\MenuFactory $menuFactory,
81  \Magento\Backend\Model\Menu\Config\Reader $configReader,
82  \Magento\Framework\App\Cache\Type\Config $configCacheType,
83  \Magento\Framework\Event\ManagerInterface $eventManager,
84  \Psr\Log\LoggerInterface $logger,
85  \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
86  \Magento\Framework\App\State $appState
87  ) {
88  $this->_menuBuilder = $menuBuilder;
89  $this->_director = $menuDirector;
90  $this->_configCacheType = $configCacheType;
91  $this->_eventManager = $eventManager;
92  $this->_logger = $logger;
93  $this->_menuFactory = $menuFactory;
94  $this->_configReader = $configReader;
95  $this->_scopeConfig = $scopeConfig;
96  $this->_appState = $appState;
97  }
98 
108  public function getMenu()
109  {
110  try {
111  $this->_initMenu();
112  return $this->_menu;
113  } catch (\InvalidArgumentException $e) {
114  $this->_logger->critical($e);
115  throw $e;
116  } catch (\BadMethodCallException $e) {
117  $this->_logger->critical($e);
118  throw $e;
119  } catch (\OutOfRangeException $e) {
120  $this->_logger->critical($e);
121  throw $e;
122  } catch (\Exception $e) {
123  throw $e;
124  }
125  }
126 
132  protected function _initMenu()
133  {
134  if (!$this->_menu) {
135  $this->_menu = $this->_menuFactory->create();
136 
137  $cache = $this->_configCacheType->load(self::CACHE_MENU_OBJECT);
138  if ($cache) {
139  $this->_menu->unserialize($cache);
140  return;
141  }
142 
143  $this->_director->direct(
144  $this->_configReader->read($this->_appState->getAreaCode()),
145  $this->_menuBuilder,
146  $this->_logger
147  );
148  $this->_menu = $this->_menuBuilder->getResult($this->_menu);
149 
150  $this->_configCacheType->save($this->_menu->serialize(), self::CACHE_MENU_OBJECT);
151  }
152  }
153 }
$logger
__construct(\Magento\Backend\Model\Menu\Builder $menuBuilder, \Magento\Backend\Model\Menu\AbstractDirector $menuDirector, \Magento\Backend\Model\MenuFactory $menuFactory, \Magento\Backend\Model\Menu\Config\Reader $configReader, \Magento\Framework\App\Cache\Type\Config $configCacheType, \Magento\Framework\Event\ManagerInterface $eventManager, \Psr\Log\LoggerInterface $logger, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Framework\App\State $appState)
Definition: Config.php:77