Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Provider.php
Go to the documentation of this file.
1 <?php
8 
11 
12 class Provider implements ProviderInterface
13 {
17  const ACL_RESOURCES_CACHE_KEY = 'provider_acl_resources_cache';
18 
22  protected $_configReader;
23 
28 
32  private $aclDataCache;
33 
37  private $serializer;
38 
42  private $cacheKey;
43 
51  public function __construct(
52  \Magento\Framework\Config\ReaderInterface $configReader,
53  TreeBuilder $resourceTreeBuilder,
54  \Magento\Framework\Acl\Data\CacheInterface $aclDataCache = null,
55  Json $serializer = null,
56  $cacheKey = self::ACL_RESOURCES_CACHE_KEY
57  ) {
58  $this->_configReader = $configReader;
59  $this->_resourceTreeBuilder = $resourceTreeBuilder;
60  $this->aclDataCache = $aclDataCache ?: ObjectManager::getInstance()->get(
61  \Magento\Framework\Config\CacheInterface::class
62  );
63  $this->serializer = $serializer ?: ObjectManager::getInstance()->get(Json::class);
64  $this->cacheKey = $cacheKey;
65  }
66 
70  public function getAclResources()
71  {
72  $tree = $this->aclDataCache->load($this->cacheKey);
73  if ($tree) {
74  return $this->serializer->unserialize($tree);
75  }
76  $aclResourceConfig = $this->_configReader->read();
77  if (!empty($aclResourceConfig['config']['acl']['resources'])) {
78  $tree = $this->_resourceTreeBuilder->build($aclResourceConfig['config']['acl']['resources']);
79  $this->aclDataCache->save($this->serializer->serialize($tree), $this->cacheKey);
80  return $tree;
81  }
82  return [];
83  }
84 }
__construct(\Magento\Framework\Config\ReaderInterface $configReader, TreeBuilder $resourceTreeBuilder, \Magento\Framework\Acl\Data\CacheInterface $aclDataCache=null, Json $serializer=null, $cacheKey=self::ACL_RESOURCES_CACHE_KEY)
Definition: Provider.php:51