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\Validator\Constraints ;
use Symfony\Component\Validator\Constraint ;
use Symfony\Component\Validator\Exception\ConstraintDefinitionException ;
/**
* Validates that a value is a valid IP address .
*
* @ Annotation
* @ Target ({ " PROPERTY " , " METHOD " , " ANNOTATION " })
*
* @ author Bernhard Schussek < bschussek @ gmail . com >
* @ author Joseph Bielawski < stloyd @ gmail . com >
*/
class Ip extends Constraint
{
const V4 = '4' ;
const V6 = '6' ;
const ALL = 'all' ;
// adds FILTER_FLAG_NO_PRIV_RANGE flag (skip private ranges)
const V4_NO_PRIV = '4_no_priv' ;
const V6_NO_PRIV = '6_no_priv' ;
const ALL_NO_PRIV = 'all_no_priv' ;
// adds FILTER_FLAG_NO_RES_RANGE flag (skip reserved ranges)
const V4_NO_RES = '4_no_res' ;
const V6_NO_RES = '6_no_res' ;
const ALL_NO_RES = 'all_no_res' ;
// adds FILTER_FLAG_NO_PRIV_RANGE and FILTER_FLAG_NO_RES_RANGE flags (skip both)
const V4_ONLY_PUBLIC = '4_public' ;
const V6_ONLY_PUBLIC = '6_public' ;
const ALL_ONLY_PUBLIC = 'all_public' ;
2016-04-20 09:56:34 -07:00
const INVALID_IP_ERROR = 'b1b427ae-9f6f-41b0-aa9b-84511fbb3c5b' ;
2015-08-17 17:00:26 -07:00
protected static $versions = array (
self :: V4 ,
self :: V6 ,
self :: ALL ,
self :: V4_NO_PRIV ,
self :: V6_NO_PRIV ,
self :: ALL_NO_PRIV ,
self :: V4_NO_RES ,
self :: V6_NO_RES ,
self :: ALL_NO_RES ,
self :: V4_ONLY_PUBLIC ,
self :: V6_ONLY_PUBLIC ,
self :: ALL_ONLY_PUBLIC ,
);
2016-04-20 09:56:34 -07:00
protected static $errorNames = array (
self :: INVALID_IP_ERROR => 'INVALID_IP_ERROR' ,
);
2015-08-17 17:00:26 -07:00
public $version = self :: V4 ;
public $message = 'This is not a valid IP address.' ;
/**
* { @ inheritdoc }
*/
public function __construct ( $options = null )
{
parent :: __construct ( $options );
if ( ! in_array ( $this -> version , self :: $versions )) {
throw new ConstraintDefinitionException ( sprintf ( 'The option "version" must be one of "%s"' , implode ( '", "' , self :: $versions )));
}
}
}