lithium\core\Configuration
Extends
lithium\core\ObjectDeprecated
The Configuration
class allow to store Environement
based configurations.
Source
class Configuration extends \lithium\core\ObjectDeprecated {
/**
* Can provide configurations based on the environment,
* i.e. `'development'`, `'production'` or `'test'`
*
* @var array of configurations, indexed by name.
*/
protected $_configurations = [];
/**
* A closure called by `_config()` which allows to automatically
* assign or auto-generate additional configuration data, once a configuration is first
* accessed. This allows configuration data to be lazy-loaded from adapters or other data
* sources.
*
* @param string $name Name of the configuration which is being accessed. This is the key
* name containing the specific set of configuration passed into `config()`.
* @param array $config Configuration assigned to `$name`. If this configuration
* is segregated by environment, then this will contain the configuration for
* the current environment.
* @return array Returns the final array of settings for the given named configuration.
*/
public $initConfig = null;
/**
* Sets configurations for a particular adaptable implementation, or returns the current
* configuration settings.
*
* @param string $name Name of the scope.
* @param array $config Configuration to set.
*/
public function set($name = null, $config = null) {
if (is_array($config)) {
$this->_configurations[$name] = $config;
return;
}
if ($config === false) {
unset($this->_configurations[$name]);
}
}
/**
* Gets an array of settings for the given named configuration in the current
* environment.
*
* @see lithium\core\Environment
* @param string $name Name of the configuration.
* @return array Settings of the named configuration.
*/
public function get($name = null) {
if ($name === null) {
$result = [];
$this->_configurations = array_filter($this->_configurations);
foreach ($this->_configurations as $key => $value) {
$result[$key] = $this->get($key);
}
return $result;
}
$settings = &$this->_configurations;
if (!isset($settings[$name])) {
return null;
}
if (isset($settings[$name][0])) {
return $settings[$name][0];
}
$env = Environment::get();
$config = isset($settings[$name][$env]) ? $settings[$name][$env] : $settings[$name];
$method = is_callable($this->initConfig) ? $this->initConfig : null;
$settings[$name][0] = $method ? $method($name, $config) : $config;
return $settings[$name][0];
}
/**
* Clears all configurations.
*/
public function reset() {
$this->_configurations = [];
}
}