-Dot Access Configuration
-========================
+# Dot Access Configuration
Given a deep data structure representing a configuration, access
configuration by dot notation.
and [dflydev/placeholder-resolver](https://github.com/dflydev/dflydev-placeholder-resolver)
to provide a complete configuration solution.
-
-Requirements
-------------
+## Requirements
* PHP (5.3+)
* [dflydev/dot-access-data](https://github.com/dflydev/dflydev-dot-access-data) (1.*)
* [dflydev/placeholder-resolver](https://github.com/dflydev/dflydev-placeholder-resolver) (1.*)
* [symfony/yaml](https://github.com/symfony/Yaml) (>2,<2.2) *(suggested)*
-
-Usage
------
+## Usage
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`:
- use Dflydev\DotAccessConfiguration\YamlFileConfigurationBuilder;
-
- $configurationBuilder = new YamlFileConfigurationBuilder('config/config.yml');
- $configuration = $configurationBuilder->build();
+```php
+use Dflydev\DotAccessConfiguration\YamlFileConfigurationBuilder;
+$configurationBuilder = new YamlFileConfigurationBuilder('config/config.yml');
+$configuration = $configurationBuilder->build();
+```
Once created, the Configuration instance behaves similarly to a Data
instance from [dflydev/dot-access-data](https://github.com/dflydev/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');
-
+```php
+$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');
+```
-Custom Configurations
----------------------
+## Custom Configurations
Configuration Builders use Configuration Factories and Placeholder Resolver
Factories behind the scenes in order to build a working configuration.
`ConfigurationBuilderInterface`.
If a Configuration is declared as follows:
+```php
+namespace MyProject;
- namespace MyProject;
-
- use Dflydev\DotAccessConfiguration\Configuration;
-
- class MyConf extends Configuration
+use Dflydev\DotAccessConfiguration\Configuration;
+
+class MyConf extends Configuration
+{
+ public function someSpecialMethod()
{
- public function someSpecialMethod()
- {
- // Whatever you want here.
- }
+ // Whatever you want here.
}
+}
+```
Create the following factory:
+```php
+namespace MyProject;
+
+use Dflydev\DotAccessConfiguration\ConfigurationFactoryInterface;
- namespace MyProject;
-
- use Dflydev\DotAccessConfiguration\ConfigurationFactoryInterface;
-
- class MyConfFactory implements ConfigurationFactoryInterface
+class MyConfFactory implements ConfigurationFactoryInterface
+{
+ /**
+ * {@inheritdocs}
+ */
+ public function create()
{
- /**
- * {@inheritdocs}
- */
- public function create()
- {
- return new MyConf;
- }
+ return new MyConf;
}
+}
+```
To use the factory with any builder, inject it as follows:
+```php
+use Dflydev\DotAccessConfiguration\YamlFileConfigurationBuilder;
+use MyProject\MyConfFactory;
- use Dflydev\DotAccessConfiguration\YamlFileConfigurationBuilder;
- use MyProject\MyConfFactory;
-
- $configurationBuilder = new YamlFileConfigurationBuilder('config/config.yml');
-
- // Inject your custom Configuration Factory
- $configurationBuilder->setConfigurationFactory(new MyConfFactory);
+$configurationBuilder = new YamlFileConfigurationBuilder('config/config.yml');
- // Will now build instances of MyConfFactory instead of
- // the standard Configuration implementation.
- $configuration = $configurationBuilder->build();
+// Inject your custom Configuration Factory
+$configurationBuilder->setConfigurationFactory(new MyConfFactory);
+// Will now build instances of MyConfFactory instead of
+// the standard Configuration implementation.
+$configuration = $configurationBuilder->build();
+```
-License
--------
+## License
This library is licensed under the New BSD License - see the LICENSE file
for details.
-
-Community
----------
+## Community
If you have questions or want to help out, join us in the
-[#dflydev](irc://irc.freenode.net/#dflydev) channel on irc.freenode.net.
\ No newline at end of file
+[#dflydev](irc://irc.freenode.net/#dflydev) channel on irc.freenode.net.