Mercurial > hg > isophonics-drupal-site
comparison vendor/symfony/validator/Constraints/ExpressionValidator.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 1fec387a4317 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
1 <?php | |
2 | |
3 /* | |
4 * This file is part of the Symfony package. | |
5 * | |
6 * (c) Fabien Potencier <fabien@symfony.com> | |
7 * | |
8 * For the full copyright and license information, please view the LICENSE | |
9 * file that was distributed with this source code. | |
10 */ | |
11 | |
12 namespace Symfony\Component\Validator\Constraints; | |
13 | |
14 use Symfony\Component\ExpressionLanguage\ExpressionLanguage; | |
15 use Symfony\Component\Validator\Constraint; | |
16 use Symfony\Component\Validator\ConstraintValidator; | |
17 use Symfony\Component\Validator\Exception\RuntimeException; | |
18 use Symfony\Component\Validator\Exception\UnexpectedTypeException; | |
19 | |
20 /** | |
21 * @author Fabien Potencier <fabien@symfony.com> | |
22 * @author Bernhard Schussek <bschussek@symfony.com> | |
23 */ | |
24 class ExpressionValidator extends ConstraintValidator | |
25 { | |
26 /** | |
27 * @var ExpressionLanguage | |
28 */ | |
29 private $expressionLanguage; | |
30 | |
31 public function __construct($propertyAccessor = null, ExpressionLanguage $expressionLanguage = null) | |
32 { | |
33 $this->expressionLanguage = $expressionLanguage; | |
34 } | |
35 | |
36 /** | |
37 * {@inheritdoc} | |
38 */ | |
39 public function validate($value, Constraint $constraint) | |
40 { | |
41 if (!$constraint instanceof Expression) { | |
42 throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Expression'); | |
43 } | |
44 | |
45 $variables = array(); | |
46 $variables['value'] = $value; | |
47 $variables['this'] = $this->context->getObject(); | |
48 | |
49 if (!$this->getExpressionLanguage()->evaluate($constraint->expression, $variables)) { | |
50 $this->context->buildViolation($constraint->message) | |
51 ->setParameter('{{ value }}', $this->formatValue($value)) | |
52 ->setCode(Expression::EXPRESSION_FAILED_ERROR) | |
53 ->addViolation(); | |
54 } | |
55 } | |
56 | |
57 private function getExpressionLanguage() | |
58 { | |
59 if (null === $this->expressionLanguage) { | |
60 if (!class_exists('Symfony\Component\ExpressionLanguage\ExpressionLanguage')) { | |
61 throw new RuntimeException('Unable to use expressions as the Symfony ExpressionLanguage component is not installed.'); | |
62 } | |
63 $this->expressionLanguage = new ExpressionLanguage(); | |
64 } | |
65 | |
66 return $this->expressionLanguage; | |
67 } | |
68 } |