Given a deep data structure representing a configuration, access configuration by dot notation.
This library combines dflydev/dot-access-data and dflydev/placeholder-resolver to provide a complete configuration solution.
- PHP (5.3+)
- dflydev/dot-access-data (^3)
- dflydev/placeholder-resolver (1.x)
- symfony/yaml (>2,<2.2) (suggested)
Generally one will use an implementation of ConfigurationBuilderInterface to build ConfigurationInterface instances. For example, to build a Configuration out of a YAML file, one would use the YamlFileConfigurationBuilder:
useDflydev\DotAccessConfiguration\YamlFileConfigurationBuilder; $configurationBuilder = newYamlFileConfigurationBuilder('config/config.yml'); $configuration = $configurationBuilder->build();Once created, the Configuration instance behaves similarly to a Data instance from dflydev/dot-access-data.
$configuration->set('a.b.c', 'ABC'); $configuration->get('a.b.c'); $configuration->set('a.b.e', array('A', 'B', 'C')); $configuration->append('a.b.e', 'D');Configuration Builders use Configuration Factories and Placeholder Resolver Factories behind the scenes in order to build a working configuration.
Under normal circumstances one should not need to do anything with the Placeholder Resolver Factory. However, one may wish to extend the default Configuration class or use an entirely different implementation altogether.
In order to build instances of custom ConfigurationInterface implementations with the standard builders, one would need to implement ConfigurationFactoryInterface and inject it into any ConfigurationBuilderInterface.
If a Configuration is declared as follows:
namespaceMyProject; useDflydev\DotAccessConfiguration\Configuration; class MyConf extends Configuration{publicfunctionsomeSpecialMethod(){// Whatever you want here. } }Create the following factory:
namespaceMyProject; useDflydev\DotAccessConfiguration\ConfigurationFactoryInterface; class MyConfFactory implements ConfigurationFactoryInterface{/** *{@inheritdocs} */publicfunctioncreate(){returnnewMyConf} }To use the factory with any builder, inject it as follows:
useDflydev\DotAccessConfiguration\YamlFileConfigurationBuilder; useMyProject\MyConfFactory; $configurationBuilder = newYamlFileConfigurationBuilder('config/config.yml'); // Inject your custom Configuration Factory$configurationBuilder->setConfigurationFactory(newMyConfFactory); // Will now build instances of MyConfFactory instead of// the standard Configuration implementation.$configuration = $configurationBuilder->build();This library is licensed under the New BSD License - see the LICENSE file for details.
If you have questions or want to help out, join us in the #dflydev channel on irc.freenode.net.