Hoa central
Context.php
Go to the documentation of this file.
1 <?php
2 
37 namespace Hoa\Ruler;
38 
47 class Context implements \ArrayAccess
48 {
54  protected $_ruler = null;
55 
61  protected $_data = [];
62 
63 
64 
71  public function __construct(Array $data = [])
72  {
73  $this->_data = $data;
74 
75  return;
76  }
77 
85  public function offsetSet($id, $value)
86  {
87  $this->_data[$id] = $value;
88 
89  return;
90  }
91 
99  public function offsetGet($id)
100  {
101  if (false === array_key_exists($id, $this->_data)) {
102  throw new Exception(
103  'Identifier %s does not exist in the context.',
104  0,
105  $id
106  );
107  }
108 
109  $value = $this->_data[$id];
110 
111  if ($value instanceof DynamicCallable) {
112  return $value($this);
113  }
114 
115  if (true === is_callable($value)) {
116  if (true === is_string($value) &&
117  false === in_array(strtolower($value), get_defined_functions()['user'])) {
118  return $value;
119  }
120 
121  $value = $this->_data[$id] = $value($this);
122  }
123 
124  return $value;
125  }
126 
132  public function offsetExists($id)
133  {
134  return true === array_key_exists($id, $this->_data);
135  }
136 
143  public function offsetUnset($id)
144  {
145  unset($this->_data[$id]);
146 
147  return;
148  }
149 }
offsetSet($id, $value)
Definition: Context.php:85
__construct(Array $data=[])
Definition: Context.php:71