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;
13:
14: /**
15: * Common Interface among all nodes.
16: *
17: * In most cases, it is better to inherit from BaseNode instead of implementing
18: * this interface yourself.
19: *
20: * @author Johannes M. Schmitt <schmittjoh@gmail.com>
21: */
22: interface NodeInterface
23: {
24: /**
25: * Returns the name of the node.
26: *
27: * @return string The name of the node
28: */
29: public function getName();
30:
31: /**
32: * Returns the path of the node.
33: *
34: * @return string The node path
35: */
36: public function getPath();
37:
38: /**
39: * Returns true when the node is required.
40: *
41: * @return Boolean If the node is required
42: */
43: public function isRequired();
44:
45: /**
46: * Returns true when the node has a default value.
47: *
48: * @return Boolean If the node has a default value
49: */
50: public function hasDefaultValue();
51:
52: /**
53: * Returns the default value of the node.
54: *
55: * @return mixed The default value
56: * @throws \RuntimeException if the node has no default value
57: */
58: public function getDefaultValue();
59:
60: /**
61: * Normalizes the supplied value.
62: *
63: * @param mixed $value The value to normalize
64: *
65: * @return mixed The normalized value
66: */
67: public function normalize($value);
68:
69: /**
70: * Merges two values together.
71: *
72: * @param mixed $leftSide
73: * @param mixed $rightSide
74: *
75: * @return mixed The merged values
76: */
77: public function merge($leftSide, $rightSide);
78:
79: /**
80: * Finalizes a value.
81: *
82: * @param mixed $value The value to finalize
83: *
84: * @return mixed The finalized value
85: */
86: public function finalize($value);
87: }
88: