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 merge conditions.
16: *
17: * @author Johannes M. Schmitt <schmittjoh@gmail.com>
18: */
19: class MergeBuilder
20: {
21: protected $node;
22: public $allowFalse;
23: public $allowOverwrite;
24:
25: /**
26: * Constructor
27: *
28: * @param NodeDefinition $node The related node
29: */
30: public function __construct(NodeDefinition $node)
31: {
32: $this->node = $node;
33: $this->allowFalse = false;
34: $this->allowOverwrite = true;
35: }
36:
37: /**
38: * Sets whether the node can be unset.
39: *
40: * @param Boolean $allow
41: *
42: * @return MergeBuilder
43: */
44: public function allowUnset($allow = true)
45: {
46: $this->allowFalse = $allow;
47:
48: return $this;
49: }
50:
51: /**
52: * Sets whether the node can be overwritten.
53: *
54: * @param Boolean $deny Whether the overwriting is forbidden or not
55: *
56: * @return MergeBuilder
57: */
58: public function denyOverwrite($deny = true)
59: {
60: $this->allowOverwrite = !$deny;
61:
62: return $this;
63: }
64:
65: /**
66: * Returns the related node.
67: *
68: * @return NodeDefinition
69: */
70: public function end()
71: {
72: return $this->node;
73: }
74: }
75: