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.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

ParameterBag.php

Zuletzt modifiziert: 09.10.2024, 12:54 - Dateigröße: 9.08 KiB


001  <?php
002   
003  /*
004   * This file is part of the Symfony package.
005   *
006   * (c) Fabien Potencier <fabien@symfony.com>
007   *
008   * For the full copyright and license information, please view the LICENSE
009   * file that was distributed with this source code.
010   */
011   
012  namespace Symfony\Component\HttpFoundation;
013   
014  /**
015   * ParameterBag is a container for key/value pairs.
016   *
017   * @author Fabien Potencier <fabien@symfony.com>
018   */
019  class ParameterBag implements \IteratorAggregate, \Countable
020  {
021      /**
022       * Parameter storage.
023       *
024       * @var array
025       */
026      protected $parameters;
027   
028      /**
029       * Constructor.
030       *
031       * @param array $parameters An array of parameters
032       */
033      public function __construct(array $parameters = array())
034      {
035          $this->parameters = $parameters;
036      }
037   
038      /**
039       * Returns the parameters.
040       *
041       * @return array An array of parameters
042       */
043      public function all()
044      {
045          return $this->parameters;
046      }
047   
048      /**
049       * Returns the parameter keys.
050       *
051       * @return array An array of parameter keys
052       */
053      public function keys()
054      {
055          return array_keys($this->parameters);
056      }
057   
058      /**
059       * Replaces the current parameters by a new set.
060       *
061       * @param array $parameters An array of parameters
062       */
063      public function replace(array $parameters = array())
064      {
065          $this->parameters = $parameters;
066      }
067   
068      /**
069       * Adds parameters.
070       *
071       * @param array $parameters An array of parameters
072       */
073      public function add(array $parameters = array())
074      {
075          $this->parameters = array_replace($this->parameters, $parameters);
076      }
077   
078      /**
079       * Returns a parameter by name.
080       *
081       * Note: Finding deep items is deprecated since version 2.8, to be removed in 3.0.
082       *
083       * @param string $key     The key
084       * @param mixed  $default The default value if the parameter key does not exist
085       * @param bool   $deep    If true, a path like foo[bar] will find deeper items
086       *
087       * @return mixed
088       *
089       * @throws \InvalidArgumentException
090       */
091      public function get($key, $default = null, $deep = false)
092      {
093          if ($deep) {
094              @trigger_error('Using paths to find deeper items in '.__METHOD__.' is deprecated since version 2.8 and will be removed in 3.0. Filter the returned value in your own code instead.', E_USER_DEPRECATED);
095          }
096   
097          if (!$deep || false === $pos = strpos($key, '[')) {
098              return array_key_exists($key, $this->parameters) ? $this->parameters[$key] : $default;
099          }
100   
101          $root = substr($key, 0, $pos);
102          if (!array_key_exists($root, $this->parameters)) {
103              return $default;
104          }
105   
106          $value = $this->parameters[$root];
107          $currentKey = null;
108          for ($i = $pos, $c = strlen($key); $i < $c; ++$i) {
109              $char = $key[$i];
110   
111              if ('[' === $char) {
112                  if (null !== $currentKey) {
113                      throw new \InvalidArgumentException(sprintf('Malformed path. Unexpected "[" at position %d.', $i));
114                  }
115   
116                  $currentKey = '';
117              } elseif (']' === $char) {
118                  if (null === $currentKey) {
119                      throw new \InvalidArgumentException(sprintf('Malformed path. Unexpected "]" at position %d.', $i));
120                  }
121   
122                  if (!is_array($value) || !array_key_exists($currentKey, $value)) {
123                      return $default;
124                  }
125   
126                  $value = $value[$currentKey];
127                  $currentKey = null;
128              } else {
129                  if (null === $currentKey) {
130                      throw new \InvalidArgumentException(sprintf('Malformed path. Unexpected "%s" at position %d.', $char, $i));
131                  }
132   
133                  $currentKey .= $char;
134              }
135          }
136   
137          if (null !== $currentKey) {
138              throw new \InvalidArgumentException(sprintf('Malformed path. Path must end with "]".'));
139          }
140   
141          return $value;
142      }
143   
144      /**
145       * Sets a parameter by name.
146       *
147       * @param string $key   The key
148       * @param mixed  $value The value
149       */
150      public function set($key, $value)
151      {
152          $this->parameters[$key] = $value;
153      }
154   
155      /**
156       * Returns true if the parameter is defined.
157       *
158       * @param string $key The key
159       *
160       * @return bool true if the parameter exists, false otherwise
161       */
162      public function has($key)
163      {
164          return array_key_exists($key, $this->parameters);
165      }
166   
167      /**
168       * Removes a parameter.
169       *
170       * @param string $key The key
171       */
172      public function remove($key)
173      {
174          unset($this->parameters[$key]);
175      }
176   
177      /**
178       * Returns the alphabetic characters of the parameter value.
179       *
180       * @param string $key     The parameter key
181       * @param string $default The default value if the parameter key does not exist
182       * @param bool   $deep    If true, a path like foo[bar] will find deeper items
183       *
184       * @return string The filtered value
185       */
186      public function getAlpha($key, $default = '', $deep = false)
187      {
188          return preg_replace('/[^[:alpha:]]/', '', $this->get($key, $default, $deep));
189      }
190   
191      /**
192       * Returns the alphabetic characters and digits of the parameter value.
193       *
194       * @param string $key     The parameter key
195       * @param string $default The default value if the parameter key does not exist
196       * @param bool   $deep    If true, a path like foo[bar] will find deeper items
197       *
198       * @return string The filtered value
199       */
200      public function getAlnum($key, $default = '', $deep = false)
201      {
202          return preg_replace('/[^[:alnum:]]/', '', $this->get($key, $default, $deep));
203      }
204   
205      /**
206       * Returns the digits of the parameter value.
207       *
208       * @param string $key     The parameter key
209       * @param string $default The default value if the parameter key does not exist
210       * @param bool   $deep    If true, a path like foo[bar] will find deeper items
211       *
212       * @return string The filtered value
213       */
214      public function getDigits($key, $default = '', $deep = false)
215      {
216          // we need to remove - and + because they're allowed in the filter
217          return str_replace(array('-', '+'), '', $this->filter($key, $default, FILTER_SANITIZE_NUMBER_INT, array(), $deep));
218      }
219   
220      /**
221       * Returns the parameter value converted to integer.
222       *
223       * @param string $key     The parameter key
224       * @param int    $default The default value if the parameter key does not exist
225       * @param bool   $deep    If true, a path like foo[bar] will find deeper items
226       *
227       * @return int The filtered value
228       */
229      public function getInt($key, $default = 0, $deep = false)
230      {
231          return (int) $this->get($key, $default, $deep);
232      }
233   
234      /**
235       * Returns the parameter value converted to boolean.
236       *
237       * @param string $key     The parameter key
238       * @param mixed  $default The default value if the parameter key does not exist
239       * @param bool   $deep    If true, a path like foo[bar] will find deeper items
240       *
241       * @return bool The filtered value
242       */
243      public function getBoolean($key, $default = false, $deep = false)
244      {
245          return $this->filter($key, $default, FILTER_VALIDATE_BOOLEAN, array(), $deep);
246      }
247   
248      /**
249       * Filter key.
250       *
251       * @param string $key     Key
252       * @param mixed  $default Default = null
253       * @param int    $filter  FILTER_* constant
254       * @param mixed  $options Filter options
255       * @param bool   $deep    Default = false
256       *
257       * @see http://php.net/manual/en/function.filter-var.php
258       *
259       * @return mixed
260       */
261      public function filter($key, $default = null, $filter = FILTER_DEFAULT, $options = array(), $deep = false)
262      {
263          static $filters = null;
264   
265          if (null === $filters) {
266              foreach (filter_list() as $tmp) {
267                  $filters[filter_id($tmp)] = 1;
268              }
269          }
270          if (is_bool($filter) || !isset($filters[$filter]) || is_array($deep)) {
271              @trigger_error('Passing the $deep boolean as 3rd argument to the '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0. Remove it altogether as the $deep argument will be removed in 3.0.', E_USER_DEPRECATED);
272              $tmp = $deep;
273              $deep = $filter;
274              $filter = $options;
275              $options = $tmp;
276          }
277   
278          $value = $this->get($key, $default, $deep);
279   
280          // Always turn $options into an array - this allows filter_var option shortcuts.
281          if (!is_array($options) && $options) {
282              $options = array('flags' => $options);
283          }
284   
285          // Add a convenience check for arrays.
286          if (is_array($value) && !isset($options['flags'])) {
287              $options['flags'] = FILTER_REQUIRE_ARRAY;
288          }
289   
290          return filter_var($value, $filter, $options);
291      }
292   
293      /**
294       * Returns an iterator for parameters.
295       *
296       * @return \ArrayIterator An \ArrayIterator instance
297       */
298      public function getIterator()
299      {
300          return new \ArrayIterator($this->parameters);
301      }
302   
303      /**
304       * Returns the number of parameters.
305       *
306       * @return int The number of parameters
307       */
308      public function count()
309      {
310          return count($this->parameters);
311      }
312  }
313