/
githubmirror
/
magento2
Обзор
Документация
Войти
/
githubmirror
/
magento2
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
2.4-develop
lib/internal/Magento/Framework/Acl/Builder.php
98 строк
2 KB
Alexandra Zota
ACP2E-4019: CE copyright updates for 2.4.9-beta1
22 окт 2025, 17:47
22 окт 2025, 17:47
1b769b7
Код
Авторство
О чём код?
<?php /** * Copyright 2014 Adobe * All Rights Reserved. */ namespace Magento\Framework\Acl; use Magento\Framework\ObjectManager\ResetAfterRequestInterface; /** * Access Control List Builder. Retrieves required role/rule/resource loaders * and uses them to populate provided ACL object. Acl object is put to cache after creation. * On consequent requests, ACL object is deserialized from cache. * * @api * @since 100.0.2 */ class Builder implements ResetAfterRequestInterface { /** * Acl object * * @var \Magento\Framework\Acl */ protected $_acl; /** * Acl loader list * * @var \Magento\Framework\Acl\LoaderInterface[] */ protected $_loaderPool; /** * @var \Magento\Framework\AclFactory */ protected $_aclFactory; /** * @param \Magento\Framework\AclFactory $aclFactory * @param \Magento\Framework\Acl\LoaderInterface $roleLoader * @param \Magento\Framework\Acl\LoaderInterface $resourceLoader * @param \Magento\Framework\Acl\LoaderInterface $ruleLoader */ public function __construct( \Magento\Framework\AclFactory $aclFactory, \Magento\Framework\Acl\LoaderInterface $roleLoader, \Magento\Framework\Acl\LoaderInterface $resourceLoader, \Magento\Framework\Acl\LoaderInterface $ruleLoader ) { $this->_aclFactory = $aclFactory; $this->_loaderPool = [$roleLoader, $resourceLoader, $ruleLoader]; } /** * Build Access Control List * * @return \Magento\Framework\Acl * @throws \LogicException */ public function getAcl() { if ($this->_acl instanceof \Magento\Framework\Acl) { return $this->_acl; } try { $this->_acl = $this->_aclFactory->create(); foreach ($this->_loaderPool as $loader) { $loader->populateAcl($this->_acl); } } catch (\Exception $e) { throw new \LogicException('Could not create an acl object: ' . $e->getMessage()); } return $this->_acl; } /** * Remove cached ACL instance. * * @return $this * @since 101.0.0 */ public function resetRuntimeAcl() { $this->_acl = null; return $this; } /** * @inheritdoc */ public function _resetState(): void { $this->resetRuntimeAcl(); } }