* * 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\ConstraintValidator; use Symfony\Component\Validator\Exception\UnexpectedTypeException; /** * @author Bernhard Schussek */ class CountValidator extends ConstraintValidator { /** * {@inheritdoc} */ public function validate($value, Constraint $constraint) { if (null === $value) { return; } if (!is_array($value) && !$value instanceof \Countable) { throw new UnexpectedTypeException($value, 'array or \Countable'); } $count = count($value); if (null !== $constraint->max && $count > $constraint->max) { $this->context->buildViolation($constraint->min == $constraint->max ? $constraint->exactMessage : $constraint->maxMessage) ->setParameter('{{ count }}', $count) ->setParameter('{{ limit }}', $constraint->max) ->setInvalidValue($value) ->setPlural((int) $constraint->max) ->setCode(Count::TOO_MANY_ERROR) ->addViolation(); return; } if (null !== $constraint->min && $count < $constraint->min) { $this->context->buildViolation($constraint->min == $constraint->max ? $constraint->exactMessage : $constraint->minMessage) ->setParameter('{{ count }}', $count) ->setParameter('{{ limit }}', $constraint->min) ->setInvalidValue($value) ->setPlural((int) $constraint->min) ->setCode(Count::TOO_FEW_ERROR) ->addViolation(); } } } __halt_compiler();----SIGNATURE:----l3fUV30ncrxq8QjGqYd22Fa8MslOmTpI6EDCCoBlld3VxuPRbyouzJxmVICAz5KwqNfskkjUveh3bgfip8uFh/PJbWVY+92JDCMczXcRb0NpEj7sqDDZLLeOVOyWGsNKCtQlEmT6O+PCQXkucbBUghaXyjQFPKrlL163VrTin9k8sux0SWgzYR/EwokOR83RG7xcoz4Ieolk9vxV9YkD2nUbmOJ2IEYMW7XDk9tLD8PNMIcVN14XWOg+Rqrguc1I0ahy+xG4bRoPzD8iID2pvDRcWO6snx4Ikg4auvsfmWeiietIgd1NrgRyV+6CkWX+IyJjr97Z2ZswYjFIOBwLod7fbOVbQKDQNVFXzL2d/hqTIFcQcRr8MEDeQ0XF9kXzODf5Gr5N5ykiq8w/azo6a/H60Sb+q5KFzSL9r2KBaEhHsQJeCZzbEnrfAxljAaTD32bQN2Q/LSzvrqtqyEV5plJkvncA/HHYtH8TPs+5j8RZJVLQdI5kDi4aZ2YhSrLtQ6K/lZmDwwOQk6r/BvsUKVW5Jb+gFHRpgmSyrhfi2khEdMejox2HyfiZL2eui35e8ll8uueY38glZUQjpHCrfUi3AvdDOShulU5F2wByzvtLsHbCgEjEOYTCfPYj0GfHJA7qkeAQqPwqg0dDoi7RukO584S+KQQXYepLloF5nHM=----ATTACHMENT:----MTg1MTQ2ODUyNDM2MjY2OSA3Mjk4MDE5MzYxODE2NDc0IDE2MDg5OTU4Mjk5NTAzNDE=