2015-08-17 17:00:26 -07:00
< ? 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 Symfony\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 .
*
2016-04-20 09:56:34 -07:00
* @ param string $key The key
2015-08-17 17:00:26 -07:00
* @ param mixed $default The default value if the parameter key does not exist
*
* @ return mixed
*/
2018-11-23 12:29:20 +00:00
public function get ( $key , $default = null )
2015-08-17 17:00:26 -07:00
{
2018-11-23 12:29:20 +00:00
return array_key_exists ( $key , $this -> parameters ) ? $this -> parameters [ $key ] : $default ;
2015-08-17 17:00:26 -07:00
}
/**
* 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
2016-04-20 09:56:34 -07:00
* @ param string $default The default value if the parameter key does not exist
2015-08-17 17:00:26 -07:00
*
* @ return string The filtered value
*/
2018-11-23 12:29:20 +00:00
public function getAlpha ( $key , $default = '' )
2015-08-17 17:00:26 -07:00
{
2018-11-23 12:29:20 +00:00
return preg_replace ( '/[^[:alpha:]]/' , '' , $this -> get ( $key , $default ));
2015-08-17 17:00:26 -07:00
}
/**
* Returns the alphabetic characters and digits of the parameter value .
*
* @ param string $key The parameter key
2016-04-20 09:56:34 -07:00
* @ param string $default The default value if the parameter key does not exist
2015-08-17 17:00:26 -07:00
*
* @ return string The filtered value
*/
2018-11-23 12:29:20 +00:00
public function getAlnum ( $key , $default = '' )
2015-08-17 17:00:26 -07:00
{
2018-11-23 12:29:20 +00:00
return preg_replace ( '/[^[:alnum:]]/' , '' , $this -> get ( $key , $default ));
2015-08-17 17:00:26 -07:00
}
/**
* Returns the digits of the parameter value .
*
* @ param string $key The parameter key
2016-04-20 09:56:34 -07:00
* @ param string $default The default value if the parameter key does not exist
2015-08-17 17:00:26 -07:00
*
* @ return string The filtered value
*/
2018-11-23 12:29:20 +00:00
public function getDigits ( $key , $default = '' )
2015-08-17 17:00:26 -07:00
{
// we need to remove - and + because they're allowed in the filter
2018-11-23 12:29:20 +00:00
return str_replace ( array ( '-' , '+' ), '' , $this -> filter ( $key , $default , FILTER_SANITIZE_NUMBER_INT ));
2015-08-17 17:00:26 -07:00
}
/**
* Returns the parameter value converted to integer .
*
* @ param string $key The parameter key
2016-04-20 09:56:34 -07:00
* @ param int $default The default value if the parameter key does not exist
2015-08-17 17:00:26 -07:00
*
* @ return int The filtered value
*/
2018-11-23 12:29:20 +00:00
public function getInt ( $key , $default = 0 )
2015-08-17 17:00:26 -07:00
{
2018-11-23 12:29:20 +00:00
return ( int ) $this -> get ( $key , $default );
2015-08-17 17:00:26 -07:00
}
/**
* Returns the parameter value converted to boolean .
*
* @ param string $key The parameter key
2019-01-24 08:00:03 +00:00
* @ param bool $default The default value if the parameter key does not exist
2015-08-17 17:00:26 -07:00
*
* @ return bool The filtered value
*/
2018-11-23 12:29:20 +00:00
public function getBoolean ( $key , $default = false )
2015-08-17 17:00:26 -07:00
{
2018-11-23 12:29:20 +00:00
return $this -> filter ( $key , $default , FILTER_VALIDATE_BOOLEAN );
2015-08-17 17:00:26 -07:00
}
/**
* Filter key .
*
2017-02-02 16:28:38 -08:00
* @ param string $key Key
* @ param mixed $default Default = null
* @ param int $filter FILTER_ * constant
* @ param mixed $options Filter options
2015-08-17 17:00:26 -07:00
*
* @ see http :// php . net / manual / en / function . filter - var . php
*
* @ return mixed
*/
2018-11-23 12:29:20 +00:00
public function filter ( $key , $default = null , $filter = FILTER_DEFAULT , $options = array ())
2015-08-17 17:00:26 -07:00
{
2018-11-23 12:29:20 +00:00
$value = $this -> get ( $key , $default );
2015-08-17 17:00:26 -07:00
// Always turn $options into an array - this allows filter_var option shortcuts.
2018-11-23 12:29:20 +00:00
if ( ! \is_array ( $options ) && $options ) {
2015-08-17 17:00:26 -07:00
$options = array ( 'flags' => $options );
}
// Add a convenience check for arrays.
2018-11-23 12:29:20 +00:00
if ( \is_array ( $value ) && ! isset ( $options [ 'flags' ])) {
2015-08-17 17:00:26 -07:00
$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 ()
{
2018-11-23 12:29:20 +00:00
return \count ( $this -> parameters );
2015-08-17 17:00:26 -07:00
}
}