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\DataProviderInformationInterface;
16:
17: /**
18: * This interface describes a collection of data provider information.
19: *
20: * @package DcGeneral\DataDefinition\Definition
21: */
22: interface DataProviderDefinitionInterface
23: extends DefinitionInterface,
24: \IteratorAggregate,
25: \Countable,
26: \ArrayAccess
27: {
28: const NAME = 'dataProvider';
29:
30: /**
31: * Add a data provider information to the definition.
32: *
33: * @param DataProviderInformationInterface $information The data provider instance to add.
34: *
35: * @return DataProviderDefinitionInterface
36: */
37: public function addInformation($information);
38:
39: /**
40: * Remove the data provider information with the given name.
41: *
42: * @param DataProviderInformationInterface|string $information The information or name of a data provider.
43: *
44: * @return DataProviderDefinitionInterface
45: */
46: public function removeInformation($information);
47:
48: /**
49: * Forcefully overwrite a stored data provider with another one.
50: *
51: * @param string $name The name of a data provider to overwrite.
52: *
53: * @param DataProviderInformationInterface $information The information of the new data provider.
54: *
55: * @return DataProviderDefinitionInterface
56: */
57: public function setInformation($name, $information);
58:
59: /**
60: * Check if there exists a definition of a data provider with the given name.
61: *
62: * @param DataProviderInformationInterface|string $information The information or name of a data provider.
63: *
64: * @return bool
65: */
66: public function hasInformation($information);
67:
68: /**
69: * Retrieve the data provider information with the given name.
70: *
71: * @param string $information The name of a data provider.
72: *
73: * @return DataProviderInformationInterface
74: */
75: public function getInformation($information);
76:
77: /**
78: * Retrieve the names of all registered providers.
79: *
80: * @return string[]
81: */
82: public function getProviderNames();
83: }
84: