1: <?php
2:
3: trait ParameterTrait {
4: private $_parameters = [];
5: private $_delegate;
6:
7: public function __construct(ParameterTrait $delegate = null) {
8: $this->_delegate = $delegate;
9: }
10:
11: public function set($name, $value) {
12: $this->_parameters[$name] = $value;
13: }
14:
15: public function get($name) {
16: return $this->_parameters[$name] ?: $this->_delegate->get($name);
17: }
18:
19: public function has($name) {
20: // array_key_exists ???
21: return isset($this->_parameters[$name]);
22: }
23:
24: public function pluck($name) {
25: $value = $this->get($name);
26:
27: if ($this->has($name)) {
28: unset($this->_parameters[$name]);
29: } else {
30: $this->_delegate->pluck($name);
31: }
32:
33: return $value;
34: }
35: }
36: