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