1: <?php
2: /**
3: * PHP version 5
4: * @package generalDriver
5: * @author Christian Schiffler <c.schiffler@cyberspectrum.de>
6: * @author Stefan Heimes <stefan_heimes@hotmail.com>
7: * @author Tristan Lins <tristan.lins@bit3.de>
8: * @copyright The MetaModels team.
9: * @license LGPL.
10: * @filesource
11: */
12:
13: namespace DcGeneral\DataDefinition\Definition;
14:
15: use DcGeneral\DataDefinition\Definition\Properties\PropertyInterface;
16:
17: /**
18: * This interface describes the data definition that holds all property information.
19: *
20: * @package DcGeneral\DataDefinition\Definition
21: */
22: interface PropertiesDefinitionInterface extends DefinitionInterface, \IteratorAggregate
23: {
24: /**
25: * The name of the definition.
26: */
27: const NAME = 'properties';
28:
29: /**
30: * Get all properties.
31: *
32: * @return PropertyInterface[]|array
33: */
34: public function getProperties();
35:
36: /**
37: * Get all property names.
38: *
39: * @return string[]|array
40: */
41: public function getPropertyNames();
42:
43: /**
44: * Add a property information to the definition.
45: *
46: * @param PropertyInterface $property The property information to add.
47: *
48: * @return PropertiesDefinitionInterface
49: */
50: public function addProperty($property);
51:
52: /**
53: * Remove a property information from the definition.
54: *
55: * @param PropertyInterface|string $property The information or the name of the property to remove.
56: *
57: * @return PropertiesDefinitionInterface
58: */
59: public function removeProperty($property);
60:
61: /**
62: * Check if a property exists.
63: *
64: * @param string $name The name of the property.
65: *
66: * @return bool
67: */
68: public function hasProperty($name);
69:
70: /**
71: * Get a property by name.
72: *
73: * @param string $name The name of the property.
74: *
75: * @return PropertyInterface
76: */
77: public function getProperty($name);
78: }
79: