Вход Регистрация
Файл: symfony-2.7/src/Symfony/Component/Validator/Constraints/TypeValidator.php
Строк: 108
<?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 SymfonyComponentValidatorConstraints;

use 
SymfonyComponentValidatorContextExecutionContextInterface;
use 
SymfonyComponentValidatorConstraint;
use 
SymfonyComponentValidatorConstraintValidator;
use 
SymfonyComponentValidatorExceptionUnexpectedTypeException;

/**
 * @author Bernhard Schussek <bschussek@gmail.com>
 *
 * @api
 */
class TypeValidator extends ConstraintValidator
{
    
/**
     * {@inheritdoc}
     */
    
public function validate($valueConstraint $constraint)
    {
        if (!
$constraint instanceof Type) {
            throw new 
UnexpectedTypeException($constraint__NAMESPACE__.'Type');
        }

        if (
null === $value) {
            return;
        }

        
$type strtolower($constraint->type);
        
$type $type == 'boolean' 'bool' $constraint->type;
        
$isFunction 'is_'.$type;
        
$ctypeFunction 'ctype_'.$type;

        if (
function_exists($isFunction) && $isFunction($value)) {
            return;
        } elseif (
function_exists($ctypeFunction) && $ctypeFunction($value)) {
            return;
        } elseif (
$value instanceof $constraint->type) {
            return;
        }

        if (
$this->context instanceof ExecutionContextInterface) {
            
$this->context->buildViolation($constraint->message)
                ->
setParameter('{{ value }}'$this->formatValue($value))
                ->
setParameter('{{ type }}'$constraint->type)
                ->
addViolation();
        } else {
            
$this->buildViolation($constraint->message)
                ->
setParameter('{{ value }}'$this->formatValue($value))
                ->
setParameter('{{ type }}'$constraint->type)
                ->
addViolation();
        }
    }
}
Онлайн: 1
Реклама