$FZ_Container = new FZ_Container();
$FZ_Container->register('FZ_DataBase', function ()
{
$FZ_DataBase = (new FZ_DataBaseFactory())->make();
$FZ_DataBase->connect(FZ_DB_HOST, FZ_DB_USER, FZ_DB_PASS, FZ_DB_NAME, FZ_DB_CHARSET);
return $FZ_DataBase;
});
class FZ_Container
{
/**
* @var array
*/
private $container = [];
/**
* @var array
*/
private $cache = [];
/**
* @param $name
* @param Closure $closure
*/
public function register($name, Closure $closure)
{
$this->container[$name] = $closure;
}
/**
* @param $name
* @return mixed
* @throws Exception
*/
public function get($name)
{
if (!isset($this->container[$name]))
{
throw new Exception('No container ' . $name);
}
if (!isset($this->cache[$name]))
{
$this->cache[$name] = $this->container[$name]();
}
return $this->cache[$name];
}
}
$this->FZ_DataBase = $this->FZ_Container->get('FZ_DataBase');
$this->FZ_DataBase->fetch('select 1');