Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mordilion/configurable
A small library to make each class configurable and to use stored configs to configure your objects.
https://github.com/mordilion/configurable
configurable configuration configurator ini json php yaml
Last synced: 4 months ago
JSON representation
A small library to make each class configurable and to use stored configs to configure your objects.
- Host: GitHub
- URL: https://github.com/mordilion/configurable
- Owner: mordilion
- License: mit
- Created: 2017-03-08T16:59:03.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2018-11-19T13:48:40.000Z (about 6 years ago)
- Last Synced: 2024-10-13T22:42:15.218Z (4 months ago)
- Topics: configurable, configuration, configurator, ini, json, php, yaml
- Language: PHP
- Homepage: http://www.devjunkie.de
- Size: 103 KB
- Stars: 5
- Watchers: 5
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![Travis](https://img.shields.io/travis/mordilion/Configurable.svg?branch=master)](https://travis-ci.org/mordilion/Configurable)
[![Packagist](https://img.shields.io/packagist/dt/mordilion/configurable.svg)](https://packagist.org/packages/mordilion/configurable)# Configurable
## Description
Configurable is a small library to make each class configurable with different kinds of configuration objects. Internaly does it create an own type of configuration object to make it more reusable.
## Requirements for YAML support
To use that package with YAML you have to have at least one of the following libraries in your installation.
Symfony YAML-Component https://github.com/symfony/yaml
Spyc (Simple-PHP-YAML-Class) https://github.com/mustangostang/spyc
PECL YAML http://php.net/manual/en/book.yaml.php
## Basic Example
```php
'http://www.devjunkie.de',
'setting2' => null,
'setting3' => 12345
);
/**
* A public property.
*
* @var integer
*/
public $setting3;
/**
* Constructor.
*
* The provided $configuration will configure the object.
*
* @param mixed $configuration
*
* @return void
*/
public function __construct($configuration = null)
{
$this->defaults['setting2'] = new \DateTime('now', new \DateTimeZone('America/Chicago'));
$this->setConfiguration(new Configuration($this->defaults));
if ($configuration != null) {
$this->addConfiguration(new Configuration($configuration));
}
}
/**
* Sets the value for setting1.
*
* @param string $value
*
* @return Something
*/
public function setSetting1($value)
{
$this->configuration->set('setting1', $value);
return $this;
}
/**
* Sets the value for setting2.
*
* @param \DateTime $value
*
* @return Something
*/
public function setSetting2(\DateTime $value)
{
$this->configuration->set('setting2', $value); // or $this->configuration->setting2 = $value;
return $this;
}
}
```## Routing Example
Use __get and __set to route through the object directly to the configuration.
```php
$name)) {
return $this->$name;
} else if (isset($this->configuration->$name)) {
return $this->configuration->$name;
}return null;
}/**
* Routing requests directly to the configuration if needed.
*
* @param string $name
* @param mixed $value
*
* @return void
*/
public function __set($name, $value)
{
if (property_exists($this, $name) || isset($this->$name)) {
$this->$name = $value;
} else if (isset($this->configuration->$name)) {
$this->configuration->$name = $value;
}
}
}// { ... }
$object = new Something();
$obejct->setConfiguration(array('property1' => 'some text', 'property2' => 'some other text')); // simple use
echo $object->property1 . ' -- ' . $object->property2; // => "some text -- some other text"
```