/** * Filter key. * @deprecated as of Core 1.4.0 * @see \Symfony\Component\HttpFoundation\ParameterBag::filter * * @param string $key Key. * @param mixed $default Default = null. * @param bool $deep Default = false. * @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, $deep = false, $filter = FILTER_DEFAULT, $options = array()) { if (func_num_args() > 2) { if (is_bool(func_get_arg(2))) { // usage is compatible with normal ParameterBag $deep = func_get_arg(2); $filter = func_num_args() >= 4 && func_get_arg(3) !== false ? func_get_arg(3) : FILTER_DEFAULT; $options = func_num_args() == 5 && func_get_arg(4) !== false ? func_get_arg(4) : array(); } else { // using old signature - third param exists and is a constant, not a bool LogUtil::log('The method signature for filter() has changed. See \\Symfony\\Component\\HttpFoundation\\ParameterBag::filter().', E_USER_DEPRECATED); $filter = func_num_args() >= 3 && func_get_arg(2) !== false ? func_get_arg(2) : FILTER_DEFAULT; $options = func_num_args() >= 4 && func_get_arg(3) !== false ? func_get_arg(3) : array(); } } return parent::filter($key, $default, $filter, $options, $deep); }
public function testFilter() { $bag = new ParameterBag(array('digits' => '0123ab', 'email' => '*****@*****.**', 'url' => 'http://example.com/foo', 'dec' => '256', 'hex' => '0x100', 'array' => array('bang'))); $this->assertEmpty($bag->filter('nokey'), '->filter() should return empty by default if no key is found'); $this->assertEquals('0123', $bag->filter('digits', '', false, FILTER_SANITIZE_NUMBER_INT), '->filter() gets a value of parameter as integer filtering out invalid characters'); $this->assertEquals('*****@*****.**', $bag->filter('email', '', false, FILTER_VALIDATE_EMAIL), '->filter() gets a value of parameter as email'); $this->assertEquals('http://example.com/foo', $bag->filter('url', '', false, FILTER_VALIDATE_URL, array('flags' => FILTER_FLAG_PATH_REQUIRED)), '->filter() gets a value of parameter as URL with a path'); // This test is repeated for code-coverage $this->assertEquals('http://example.com/foo', $bag->filter('url', '', false, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED), '->filter() gets a value of parameter as URL with a path'); $this->assertFalse($bag->filter('dec', '', false, FILTER_VALIDATE_INT, array('flags' => FILTER_FLAG_ALLOW_HEX, 'options' => array('min_range' => 1, 'max_range' => 0xff))), '->filter() gets a value of parameter as integer between boundaries'); $this->assertFalse($bag->filter('hex', '', false, FILTER_VALIDATE_INT, array('flags' => FILTER_FLAG_ALLOW_HEX, 'options' => array('min_range' => 1, 'max_range' => 0xff))), '->filter() gets a value of parameter as integer between boundaries'); $this->assertEquals(array('bang'), $bag->filter('array', '', false), '->filter() gets a value of parameter as an array'); }