<?php
//Enter your code here, enjoy!
$array = [
'database' => [
'host' => 'localhost',
'db_name' => 'test',
'user' => 'root',
'password' => ''
],
'locale' => [
'timezone' => 'Europe/Rome',
'default_language' => 'en'
],
'mailer' => [
'system' => 'phpmail'
],
'session' => [
'id' => 'vela_id'
]
];
/**
* Config class
*
* Simple class to store or get elements from configuration registry
*/
class Config implements \ArrayAccess
{
/** @var array $data Data configuration array */
private $data = [];
/**
* Class constructor
* @param array $data List of values to add to the configuration registry
*/
public function __construct(array $data = [])
{
$this->data = $data;
}
/**
* Retrieves elements from config array
*
* @param string $key
* @return mixed returns a config value
* @throws Exception when no $key found
*/
public function get($key)
{
$segments = explode('.', $key);
$data = $this->data;
foreach ($segments as $segment)
{
if (isset($this->data[$segment]))
{
$this->data = $$this->data[$segment];
} else {
$this->data = null;
break;
}
}
return $this->data;
}
/**
* Return true if value is empty for given key
*
* @param string $key
* @return bool
*/
public function isEmpty($key)
{
return empty($this->data[$key]);
}
/**
* Key to set
*
* @param mixed $key
* @param mixed $value
* @throws \Exception
*/
public function offsetSet($key, $value)
{
if (!$key)
{
$this->data[] = $value;
} else
{
$this->data[$key] = $value;
}
}
/**
* Key to retrieve
*
* @param mixed $key
* @return string|null
*/
public function offsetGet($key)
{
if (isset($this->data[$key]))
{
return $this->data[$key];
}
return null;
}
/**
* Whether a key exists
*
* @param mixed $key
* @return bool
*/
public function offsetExists($key)
{
return isset($this->data[$key]);
}
/**
* Key to unset
*
* @param mixed $key
*/
public function offsetUnset($key)
{
unset($this->data[$key]);
}
}
$config = new Config($array);
var_dump($config->get('database.host'));
preferences:
47.74 ms | 402 KiB | 5 Q