Verzeichnisstruktur phpBB-3.2.0
- Veröffentlicht
- 06.01.2017
So funktioniert es
|
Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück |
Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
AbstractOptions.php
001 <?php
002 /**
003 * Zend Framework (http://framework.zend.com/)
004 *
005 * @link http://github.com/zendframework/zf2 for the canonical source repository
006 * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
007 * @license http://framework.zend.com/license/new-bsd New BSD License
008 */
009
010 namespace Zend\Stdlib;
011
012 use Traversable;
013
014 abstract class AbstractOptions implements ParameterObjectInterface
015 {
016 /**
017 * We use the __ prefix to avoid collisions with properties in
018 * user-implementations.
019 *
020 * @var bool
021 */
022 protected $__strictMode__ = true;
023
024 /**
025 * Constructor
026 *
027 * @param array|Traversable|null $options
028 */
029 public function __construct($options = null)
030 {
031 if (null !== $options) {
032 $this->setFromArray($options);
033 }
034 }
035
036 /**
037 * Set one or more configuration properties
038 *
039 * @param array|Traversable|AbstractOptions $options
040 * @throws Exception\InvalidArgumentException
041 * @return AbstractOptions Provides fluent interface
042 */
043 public function setFromArray($options)
044 {
045 if ($options instanceof self) {
046 $options = $options->toArray();
047 }
048
049 if (!is_array($options) && !$options instanceof Traversable) {
050 throw new Exception\InvalidArgumentException(
051 sprintf(
052 'Parameter provided to %s must be an %s, %s or %s',
053 __METHOD__,
054 'array',
055 'Traversable',
056 'Zend\Stdlib\AbstractOptions'
057 )
058 );
059 }
060
061 foreach ($options as $key => $value) {
062 $this->__set($key, $value);
063 }
064
065 return $this;
066 }
067
068 /**
069 * Cast to array
070 *
071 * @return array
072 */
073 public function toArray()
074 {
075 $array = array();
076 $transform = function ($letters) {
077 $letter = array_shift($letters);
078 return '_' . strtolower($letter);
079 };
080 foreach ($this as $key => $value) {
081 if ($key === '__strictMode__') {
082 continue;
083 }
084 $normalizedKey = preg_replace_callback('/([A-Z])/', $transform, $key);
085 $array[$normalizedKey] = $value;
086 }
087 return $array;
088 }
089
090 /**
091 * Set a configuration property
092 *
093 * @see ParameterObject::__set()
094 * @param string $key
095 * @param mixed $value
096 * @throws Exception\BadMethodCallException
097 * @return void
098 */
099 public function __set($key, $value)
100 {
101 $setter = 'set' . str_replace('_', '', $key);
102
103 if (is_callable(array($this, $setter))) {
104 $this->{$setter}($value);
105
106 return;
107 }
108
109 if ($this->__strictMode__) {
110 throw new Exception\BadMethodCallException(sprintf(
111 'The option "%s" does not have a callable "%s" ("%s") setter method which must be defined',
112 $key,
113 'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $key))),
114 $setter
115 ));
116 }
117 }
118
119 /**
120 * Get a configuration property
121 *
122 * @see ParameterObject::__get()
123 * @param string $key
124 * @throws Exception\BadMethodCallException
125 * @return mixed
126 */
127 public function __get($key)
128 {
129 $getter = 'get' . str_replace('_', '', $key);
130
131 if (is_callable(array($this, $getter))) {
132 return $this->{$getter}();
133 }
134
135 throw new Exception\BadMethodCallException(sprintf(
136 'The option "%s" does not have a callable "%s" getter method which must be defined',
137 $key,
138 'get' . str_replace(' ', '', ucwords(str_replace('_', ' ', $key)))
139 ));
140 }
141
142 /**
143 * Test if a configuration property is null
144 * @see ParameterObject::__isset()
145 * @param string $key
146 * @return bool
147 */
148 public function __isset($key)
149 {
150 $getter = 'get' . str_replace('_', '', $key);
151
152 return method_exists($this, $getter) && null !== $this->__get($key);
153 }
154
155 /**
156 * Set a configuration property to NULL
157 *
158 * @see ParameterObject::__unset()
159 * @param string $key
160 * @throws Exception\InvalidArgumentException
161 * @return void
162 */
163 public function __unset($key)
164 {
165 try {
166 $this->__set($key, null);
167 } catch (Exception\BadMethodCallException $e) {
168 throw new Exception\InvalidArgumentException(
169 'The class property $' . $key . ' cannot be unset as'
170 . ' NULL is an invalid value for it',
171 0,
172 $e
173 );
174 }
175 }
176 }
177