Gene\Di 是gene框架的核心类之一,用Gene\Di来做单例集中管理非常方便,效率极高;同时,用di实现ioc对象注入,控制反转等框架功能。
初始化reg。Gene\Di用来存取对象,适合管理单对象,提供的方法都是静态方法。
无
返回值: Gene\Di实例化对象本身。
//实例化注册对象
$reg = new Gene\Di();
设置对象。
参数 | 类型 | 是否必填 | 注释 |
---|---|---|---|
keyName | String | 是 | 配置名称。 |
value | object | 是 | 实例化化的对象。 |
返回值: boolean。
$aClass = new demo();
Gene\Di::set("testClass",$a);
获取对象。
参数 | 类型 | 是否必填 | 注释 |
---|---|---|---|
keyName | String | 否 | 配置名称。 |
返回值: object 对象。
$aClass = Gene\Di::get("testClass");
删除对象。
参数 | 类型 | 是否必填 | 注释 |
---|---|---|---|
keyName | String | 否 | 配置名称。 |
返回值: boolean。
Gene\Di::del("testClass");
判断对象是否已存在。
参数 | 类型 | 是否必填 | 注释 |
---|---|---|---|
keyName | String | 否 | 配置名称。 |
返回值: boolean。
$result = Gene\Di::has("testClass")
在框架中,通常封装工厂模式,需要实现单例,用Gene\Di就很方便了,并且可以全项目通用。
参数 | 类型 | 是否必填 | 注释 |
---|---|---|---|
keyName | String | 否 | 配置名称。 |
返回值: boolean。
/**
* Connect db from config
*
* @param array $config db config
* @param string db config key name
* @return Db
*/
public function db($name = NULL)
{
NULL === $name && $name = $this->_db;
if (is_array($name)) {
return Ext\Com\Db::factory($name);
}
$regName = "_db_{$name}";
if (!$db = Gene\Di::get($regName)) {
$config = (array) Gene\Application::config($name);
$db = Ext\Com\Db::factory($config);
Gene\Di::set($regName, $db);
}
return $db;
}