This repository was archived by the owner on Jan 31, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 59
Expand file tree
/
Copy pathRegistry.php
More file actions
157 lines (135 loc) · 3.43 KB
/
Registry.php
File metadata and controls
157 lines (135 loc) · 3.43 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
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
namespace Zend\View\Helper\Placeholder;
use Zend\View\Exception;
/**
* Registry for placeholder containers
*/
class Registry
{
/**
* Singleton instance
*
* @var Registry
*/
protected static $instance;
/**
* Default container class
*
* @var string
*/
protected $containerClass = 'Zend\View\Helper\Placeholder\Container';
/**
* Placeholder containers
*
* @var array
*/
protected $items = [];
/**
* Set the container for an item in the registry
*
* @param string $key
* @param Container\AbstractContainer $container
* @return Registry
*/
public function setContainer($key, Container\AbstractContainer $container)
{
$key = (string) $key;
$this->items[$key] = $container;
return $this;
}
/**
* Retrieve a placeholder container
*
* @param string $key
* @return Container\AbstractContainer
*/
public function getContainer($key)
{
$key = (string) $key;
if (isset($this->items[$key])) {
return $this->items[$key];
}
$container = $this->createContainer($key);
return $container;
}
/**
* Does a particular container exist?
*
* @param string $key
* @return bool
*/
public function containerExists($key)
{
$key = (string) $key;
return array_key_exists($key, $this->items);
}
/**
* createContainer
*
* @param string $key
* @param array $value
* @return Container\AbstractContainer
*/
public function createContainer($key, array $value = [])
{
$key = (string) $key;
$this->items[$key] = new $this->containerClass($value);
return $this->items[$key];
}
/**
* Delete a container
*
* @param string $key
* @return bool
*/
public function deleteContainer($key)
{
$key = (string) $key;
if (isset($this->items[$key])) {
unset($this->items[$key]);
return true;
}
return false;
}
/**
* Set the container class to use
*
* @param string $name
* @throws Exception\InvalidArgumentException
* @throws Exception\DomainException
* @return Registry
*/
public function setContainerClass($name)
{
if (! class_exists($name)) {
throw new Exception\DomainException(
sprintf(
'%s expects a valid registry class name; received "%s", which did not resolve',
__METHOD__,
$name
)
);
}
if (! in_array('Zend\View\Helper\Placeholder\Container\AbstractContainer', class_parents($name))) {
throw new Exception\InvalidArgumentException('Invalid Container class specified');
}
$this->containerClass = $name;
return $this;
}
/**
* Retrieve the container class
*
* @return string
*/
public function getContainerClass()
{
return $this->containerClass;
}
}