1 # Dot Access Configuration
3 Given a deep data structure representing a configuration, access
4 configuration by dot notation.
6 This library combines [dflydev/dot-access-data](https://github.com/dflydev/dflydev-dot-access-data)
7 and [dflydev/placeholder-resolver](https://github.com/dflydev/dflydev-placeholder-resolver)
8 to provide a complete configuration solution.
13 * [dflydev/dot-access-data](https://github.com/dflydev/dflydev-dot-access-data) (1.*)
14 * [dflydev/placeholder-resolver](https://github.com/dflydev/dflydev-placeholder-resolver) (1.*)
15 * [symfony/yaml](https://github.com/symfony/Yaml) (>2,<2.2) *(suggested)*
19 Generally one will use an implementation of `ConfigurationBuilderInterface`
20 to build `ConfigurationInterface` instances. For example, to build a Configuration
21 out of a YAML file, one would use the `YamlFileConfigurationBuilder`:
24 use Dflydev\DotAccessConfiguration\YamlFileConfigurationBuilder;
26 $configurationBuilder = new YamlFileConfigurationBuilder('config/config.yml');
27 $configuration = $configurationBuilder->build();
30 Once created, the Configuration instance behaves similarly to a Data
31 instance from [dflydev/dot-access-data](https://github.com/dflydev/dflydev-dot-access-data).
34 $configuration->set('a.b.c', 'ABC');
35 $configuration->get('a.b.c');
36 $configuration->set('a.b.e', array('A', 'B', 'C'));
37 $configuration->append('a.b.e', 'D');
40 ## Custom Configurations
42 Configuration Builders use Configuration Factories and Placeholder Resolver
43 Factories behind the scenes in order to build a working configuration.
45 Under normal circumstances one should not need to do anything with the
46 Placeholder Resolver Factory. However, one may wish to extend the
47 default `Configuration` class or use an entirely different implementation
50 In order to build instances of custom `ConfigurationInterface` implementations
51 with the standard builders, one would need to implement
52 `ConfigurationFactoryInterface` and inject it into any
53 `ConfigurationBuilderInterface`.
55 If a Configuration is declared as follows:
59 use Dflydev\DotAccessConfiguration\Configuration;
61 class MyConf extends Configuration
63 public function someSpecialMethod()
65 // Whatever you want here.
70 Create the following factory:
74 use Dflydev\DotAccessConfiguration\ConfigurationFactoryInterface;
76 class MyConfFactory implements ConfigurationFactoryInterface
81 public function create()
88 To use the factory with any builder, inject it as follows:
90 use Dflydev\DotAccessConfiguration\YamlFileConfigurationBuilder;
91 use MyProject\MyConfFactory;
93 $configurationBuilder = new YamlFileConfigurationBuilder('config/config.yml');
95 // Inject your custom Configuration Factory
96 $configurationBuilder->setConfigurationFactory(new MyConfFactory);
98 // Will now build instances of MyConfFactory instead of
99 // the standard Configuration implementation.
100 $configuration = $configurationBuilder->build();
105 This library is licensed under the New BSD License - see the LICENSE file
110 If you have questions or want to help out, join us in the
111 [#dflydev](irc://irc.freenode.net/#dflydev) channel on irc.freenode.net.