# ParameterBag

class ParameterBag implements IteratorAggregate, Countable

ParameterBag is a container for key/value pairs.

## Properties

`protected` | `$parameters` | Parameter storage. |

## Methods

`public` | `` | `__construct(array $parameters = array())` | No description |
`public` | `array` | `all()` | Returns the parameters. |
`public` | `array` | `keys()` | Returns the parameter keys. |
`public` | `` | `replace(array $parameters = array())` | Replaces the current parameters by a new set. |
`public` | `` | `add(array $parameters = array())` | Adds parameters. |
`public` | `mixed` | `get(string $key, mixed $default = null)` | Returns a parameter by name. |
`public` | `` | `set(string $key, mixed $value)` | Sets a parameter by name. |
`public` | `bool` | `has(string $key)` | Returns true if the parameter is defined. |
`public` | `` | `remove(string $key)` | Removes a parameter. |
`public` | `string` | `getAlpha(string $key, string $default = '')` | Returns the alphabetic characters of the parameter value. |
`public` | `string` | `getAlnum(string $key, string $default = '')` | Returns the alphabetic characters and digits of the parameter value. |
`public` | `string` | `getDigits(string $key, string $default = '')` | Returns the digits of the parameter value. |
`public` | `int` | `getInt(string $key, int $default)` | Returns the parameter value converted to integer. |
`public` | `bool` | `getBoolean(string $key, mixed $default = false)` | Returns the parameter value converted to boolean. |
`public` | `mixed` | `filter(string $key, mixed $default = null, int $filter = FILTER_DEFAULT, mixed $options = array())` | Filter key. |
`public` | `ArrayIterator` | `getIterator()` | Returns an iterator for parameters. |
`public` | `int` | `count()` | Returns the number of parameters. |

## Details

at line 29

### `__construct()`

`public __construct(array $parameters = array())`

#### Parameters

`array` | `$parameters` | An array of parameters

at line 39

### `all()`

`public array all()`

Returns the parameters.

#### Return Value

`array` | An array of parameters

at line 49

### `keys()`

`public array keys()`

Returns the parameter keys.

#### Return Value

`array` | An array of parameter keys

at line 59

### `replace()`

`public replace(array $parameters = array())`

Replaces the current parameters by a new set.

#### Parameters

`array` | `$parameters` | An array of parameters

at line 69

### `add()`

`public add(array $parameters = array())`

Adds parameters.

#### Parameters

`array` | `$parameters` | An array of parameters

at line 82

### `get()`

`public mixed get(string $key, mixed $default = null)`

Returns a parameter by name.

#### Parameters

`string` | `$key` | The key
`mixed` | `$default` | The default value if the parameter key does not exist

#### Return Value

`mixed` |

at line 93

### `set()`

`public set(string $key, mixed $value)`

Sets a parameter by name.

#### Parameters

`string` | `$key` | The key
`mixed` | `$value` | The value

at line 105

### `has()`

`public bool has(string $key)`

Returns true if the parameter is defined.

#### Parameters

`string` | `$key` | The key

#### Return Value

`bool` | true if the parameter exists, false otherwise

at line 115

### `remove()`

`public remove(string $key)`

Removes a parameter.

#### Parameters

`string` | `$key` | The key

at line 128

### `getAlpha()`

`public string getAlpha(string $key, string $default = '')`

Returns the alphabetic characters of the parameter value.

#### Parameters

`string` | `$key` | The parameter key
`string` | `$default` | The default value if the parameter key does not exist

#### Return Value

`string` | The filtered value

at line 141

### `getAlnum()`

`public string getAlnum(string $key, string $default = '')`

Returns the alphabetic characters and digits of the parameter value.

#### Parameters

`string` | `$key` | The parameter key
`string` | `$default` | The default value if the parameter key does not exist

#### Return Value

`string` | The filtered value

at line 154

### `getDigits()`

`public string getDigits(string $key, string $default = '')`

Returns the digits of the parameter value.

#### Parameters

`string` | `$key` | The parameter key
`string` | `$default` | The default value if the parameter key does not exist

#### Return Value

`string` | The filtered value

at line 168

### `getInt()`

`public int getInt(string $key, int $default)`

Returns the parameter value converted to integer.

#### Parameters

`string` | `$key` | The parameter key
`int` | `$default` | The default value if the parameter key does not exist

#### Return Value

`int` | The filtered value

at line 181

### `getBoolean()`

`public bool getBoolean(string $key, mixed $default = false)`

Returns the parameter value converted to boolean.

#### Parameters

`string` | `$key` | The parameter key
`mixed` | `$default` | The default value if the parameter key does not exist

#### Return Value

`bool` | The filtered value

at line 198

### `filter()`

`public mixed filter(string $key, mixed $default = null, int $filter = FILTER_DEFAULT, mixed $options = array())`

Filter key.

#### Parameters

`string` | `$key` | Key
`mixed` | `$default` | Default = null
`int` | `$filter` | FILTER_* constant
`mixed` | `$options` | Filter options

#### Return Value

`mixed` |

#### See also

http://php.net/manual/en/function.filter-var.php |

at line 220

### `getIterator()`

`public ArrayIterator getIterator()`

Returns an iterator for parameters.

#### Return Value

`ArrayIterator` | An \ArrayIterator instance

at line 230

### `count()`

`public int count()`

Returns the number of parameters.

#### Return Value

`int` | The number of parameters

## Source code

    <?php

    /*
     * This file is part of the Symfony package.
     *
     * (c) Fabien Potencier <fabien@symfony.com>
     *
     * For the full copyright and license information, please view the LICENSE
     * file that was distributed with this source code.
     */

    namespace App\Khan\Component\HttpFoundation;

    /**
     * ParameterBag is a container for key/value pairs.
     *
     * @author Fabien Potencier <fabien@symfony.com>
     */
    class ParameterBag implements \IteratorAggregate, \Countable
    {
        /**
         * Parameter storage.
         */
        protected $parameters;

        /**
         * @param array $parameters An array of parameters
         */
        public function __construct(array $parameters = array())
        {
            $this->parameters = $parameters;
        }

        /**
         * Returns the parameters.
         *
         * @return array An array of parameters
         */
        public function all()
        {
            return $this->parameters;
        }

        /**
         * Returns the parameter keys.
         *
         * @return array An array of parameter keys
         */
        public function keys()
        {
            return array_keys($this->parameters);
        }

        /**
         * Replaces the current parameters by a new set.
         *
         * @param array $parameters An array of parameters
         */
        public function replace(array $parameters = array())
        {
            $this->parameters = $parameters;
        }

        /**
         * Adds parameters.
         *
         * @param array $parameters An array of parameters
         */
        public function add(array $parameters = array())
        {
            $this->parameters = array_replace($this->parameters, $parameters);
        }

        /**
         * Returns a parameter by name.
         *
         * @param string $key     The key
         * @param mixed  $default The default value if the parameter key does not exist
         *
         * @return mixed
         */
        public function get($key, $default = null)
        {
            return array_key_exists($key, $this->parameters) ? $this->parameters[$key] : $default;
        }

        /**
         * Sets a parameter by name.
         *
         * @param string $key   The key
         * @param mixed  $value The value
         */
        public function set($key, $value)
        {
            $this->parameters[$key] = $value;
        }

        /**
         * Returns true if the parameter is defined.
         *
         * @param string $key The key
         *
         * @return bool true if the parameter exists, false otherwise
         */
        public function has($key)
        {
            return array_key_exists($key, $this->parameters);
        }

        /**
         * Removes a parameter.
         *
         * @param string $key The key
         */
        public function remove($key)
        {
            unset($this->parameters[$key]);
        }

        /**
         * Returns the alphabetic characters of the parameter value.
         *
         * @param string $key     The parameter key
         * @param string $default The default value if the parameter key does not exist
         *
         * @return string The filtered value
         */
        public function getAlpha($key, $default = '')
        {
            return preg_replace('/[^[:alpha:]]/', '', $this->get($key, $default));
        }

        /**
         * Returns the alphabetic characters and digits of the parameter value.
         *
         * @param string $key     The parameter key
         * @param string $default The default value if the parameter key does not exist
         *
         * @return string The filtered value
         */
        public function getAlnum($key, $default = '')
        {
            return preg_replace('/[^[:alnum:]]/', '', $this->get($key, $default));
        }

        /**
         * Returns the digits of the parameter value.
         *
         * @param string $key     The parameter key
         * @param string $default The default value if the parameter key does not exist
         *
         * @return string The filtered value
         */
        public function getDigits($key, $default = '')
        {
            // we need to remove - and + because they're allowed in the filter
            return str_replace(array('-', '+'), '', $this->filter($key, $default, FILTER_SANITIZE_NUMBER_INT));
        }

        /**
         * Returns the parameter value converted to integer.
         *
         * @param string $key     The parameter key
         * @param int    $default The default value if the parameter key does not exist
         *
         * @return int The filtered value
         */
        public function getInt($key, $default = 0)
        {
            return (int) $this->get($key, $default);
        }

        /**
         * Returns the parameter value converted to boolean.
         *
         * @param string $key     The parameter key
         * @param mixed  $default The default value if the parameter key does not exist
         *
         * @return bool The filtered value
         */
        public function getBoolean($key, $default = false)
        {
            return $this->filter($key, $default, FILTER_VALIDATE_BOOLEAN);
        }

        /**
         * Filter key.
         *
         * @param string $key     Key
         * @param mixed  $default Default = null
         * @param int    $filter  FILTER_* constant
         * @param mixed  $options Filter options
         *
         * @see http://php.net/manual/en/function.filter-var.php
         *
         * @return mixed
         */
        public function filter($key, $default = null, $filter = FILTER_DEFAULT, $options = array())
        {
            $value = $this->get($key, $default);

            // Always turn $options into an array - this allows filter_var option shortcuts.
            if (!is_array($options) && $options) {
                $options = array('flags' => $options);
            }

            // Add a convenience check for arrays.
            if (is_array($value) && !isset($options['flags'])) {
                $options['flags'] = FILTER_REQUIRE_ARRAY;
            }

            return filter_var($value, $filter, $options);
        }

        /**
         * Returns an iterator for parameters.
         *
         * @return \ArrayIterator An \ArrayIterator instance
         */
        public function getIterator()
        {
            return new \ArrayIterator($this->parameters);
        }

        /**
         * Returns the number of parameters.
         *
         * @return int The number of parameters
         */
        public function count()
        {
            return count($this->parameters);
        }
    }