Chris@0
|
1 <?php
|
Chris@0
|
2 /**
|
Chris@0
|
3 * Zend Framework (http://framework.zend.com/)
|
Chris@0
|
4 *
|
Chris@0
|
5 * @link http://github.com/zendframework/zf2 for the canonical source repository
|
Chris@0
|
6 * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
Chris@0
|
7 * @license http://framework.zend.com/license/new-bsd New BSD License
|
Chris@0
|
8 */
|
Chris@0
|
9
|
Chris@0
|
10 namespace Zend\Stdlib;
|
Chris@0
|
11
|
Chris@0
|
12 use ArrayObject as PhpArrayObject;
|
Chris@0
|
13
|
Chris@0
|
14 class Parameters extends PhpArrayObject implements ParametersInterface
|
Chris@0
|
15 {
|
Chris@0
|
16 /**
|
Chris@0
|
17 * Constructor
|
Chris@0
|
18 *
|
Chris@0
|
19 * Enforces that we have an array, and enforces parameter access to array
|
Chris@0
|
20 * elements.
|
Chris@0
|
21 *
|
Chris@0
|
22 * @param array $values
|
Chris@0
|
23 */
|
Chris@0
|
24 public function __construct(array $values = null)
|
Chris@0
|
25 {
|
Chris@0
|
26 if (null === $values) {
|
Chris@0
|
27 $values = [];
|
Chris@0
|
28 }
|
Chris@0
|
29 parent::__construct($values, ArrayObject::ARRAY_AS_PROPS);
|
Chris@0
|
30 }
|
Chris@0
|
31
|
Chris@0
|
32 /**
|
Chris@0
|
33 * Populate from native PHP array
|
Chris@0
|
34 *
|
Chris@0
|
35 * @param array $values
|
Chris@0
|
36 * @return void
|
Chris@0
|
37 */
|
Chris@0
|
38 public function fromArray(array $values)
|
Chris@0
|
39 {
|
Chris@0
|
40 $this->exchangeArray($values);
|
Chris@0
|
41 }
|
Chris@0
|
42
|
Chris@0
|
43 /**
|
Chris@0
|
44 * Populate from query string
|
Chris@0
|
45 *
|
Chris@0
|
46 * @param string $string
|
Chris@0
|
47 * @return void
|
Chris@0
|
48 */
|
Chris@0
|
49 public function fromString($string)
|
Chris@0
|
50 {
|
Chris@0
|
51 $array = [];
|
Chris@0
|
52 parse_str($string, $array);
|
Chris@0
|
53 $this->fromArray($array);
|
Chris@0
|
54 }
|
Chris@0
|
55
|
Chris@0
|
56 /**
|
Chris@0
|
57 * Serialize to native PHP array
|
Chris@0
|
58 *
|
Chris@0
|
59 * @return array
|
Chris@0
|
60 */
|
Chris@0
|
61 public function toArray()
|
Chris@0
|
62 {
|
Chris@0
|
63 return $this->getArrayCopy();
|
Chris@0
|
64 }
|
Chris@0
|
65
|
Chris@0
|
66 /**
|
Chris@0
|
67 * Serialize to query string
|
Chris@0
|
68 *
|
Chris@0
|
69 * @return string
|
Chris@0
|
70 */
|
Chris@0
|
71 public function toString()
|
Chris@0
|
72 {
|
Chris@12
|
73 return http_build_query($this->toArray());
|
Chris@0
|
74 }
|
Chris@0
|
75
|
Chris@0
|
76 /**
|
Chris@0
|
77 * Retrieve by key
|
Chris@0
|
78 *
|
Chris@0
|
79 * Returns null if the key does not exist.
|
Chris@0
|
80 *
|
Chris@0
|
81 * @param string $name
|
Chris@0
|
82 * @return mixed
|
Chris@0
|
83 */
|
Chris@0
|
84 public function offsetGet($name)
|
Chris@0
|
85 {
|
Chris@0
|
86 if ($this->offsetExists($name)) {
|
Chris@0
|
87 return parent::offsetGet($name);
|
Chris@0
|
88 }
|
Chris@0
|
89 return;
|
Chris@0
|
90 }
|
Chris@0
|
91
|
Chris@0
|
92 /**
|
Chris@0
|
93 * @param string $name
|
Chris@0
|
94 * @param mixed $default optional default value
|
Chris@0
|
95 * @return mixed
|
Chris@0
|
96 */
|
Chris@0
|
97 public function get($name, $default = null)
|
Chris@0
|
98 {
|
Chris@0
|
99 if ($this->offsetExists($name)) {
|
Chris@0
|
100 return parent::offsetGet($name);
|
Chris@0
|
101 }
|
Chris@0
|
102 return $default;
|
Chris@0
|
103 }
|
Chris@0
|
104
|
Chris@0
|
105 /**
|
Chris@0
|
106 * @param string $name
|
Chris@0
|
107 * @param mixed $value
|
Chris@0
|
108 * @return Parameters
|
Chris@0
|
109 */
|
Chris@0
|
110 public function set($name, $value)
|
Chris@0
|
111 {
|
Chris@0
|
112 $this[$name] = $value;
|
Chris@0
|
113 return $this;
|
Chris@0
|
114 }
|
Chris@0
|
115 }
|