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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?php
/**
* ACL cache
*
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Framework\Acl;
class Cache implements CacheInterface
{
/**
* Cache
*
* @var \Magento\Framework\Config\CacheInterface
*/
protected $_cache;
/**
* Cache key
*
* @var string
*/
protected $_cacheKey;
/**
* @var \Magento\Framework\Acl
*/
protected $_acl = null;
/**
* @param \Magento\Framework\Config\CacheInterface $cache
* @param string $cacheKey
*/
public function __construct(\Magento\Framework\Config\CacheInterface $cache, $cacheKey)
{
$this->_cache = $cache;
$this->_cacheKey = $cacheKey;
}
/**
* Check whether ACL object is in cache
*
* @return bool
*/
public function has()
{
return null !== $this->_acl || $this->_cache->test($this->_cacheKey);
}
/**
* Retrieve ACL object from cache
*
* @return \Magento\Framework\Acl
*/
public function get()
{
if (null == $this->_acl) {
$this->_acl = unserialize($this->_cache->load($this->_cacheKey));
}
return $this->_acl;
}
/**
* Save ACL object to cache
*
* @param \Magento\Framework\Acl $acl
* @return void
*/
public function save(\Magento\Framework\Acl $acl)
{
$this->_acl = $acl;
$this->_cache->save(serialize($acl), $this->_cacheKey);
}
/**
* Clear ACL instance cache
*
* @return void
*/
public function clean()
{
$this->_acl = null;
$this->_cache->remove($this->_cacheKey);
}
}