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\Config\Definition\Builder;
13:
14: /**
15: * This class builds validation conditions.
16: *
17: * @author Christophe Coevoet <stof@notk.org>
18: */
19: class ValidationBuilder
20: {
21: protected $node;
22: public $rules;
23:
24: /**
25: * Constructor
26: *
27: * @param NodeDefinition $node The related node
28: */
29: public function __construct(NodeDefinition $node)
30: {
31: $this->node = $node;
32:
33: $this->rules = array();
34: }
35:
36: /**
37: * Registers a closure to run as normalization or an expression builder to build it if null is provided.
38: *
39: * @param \Closure $closure
40: *
41: * @return ExprBuilder|ValidationBuilder
42: */
43: public function rule(\Closure $closure = null)
44: {
45: if (null !== $closure) {
46: $this->rules[] = $closure;
47:
48: return $this;
49: }
50:
51: return $this->rules[] = new ExprBuilder($this->node);
52: }
53: }
54: