Verzeichnisstruktur phpBB-3.1.0


Veröffentlicht
27.10.2014

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