继上一篇ccORM里的pdo操作类的代码, 再写一点可实例化这个操作类的基础模型代码, 笔者在yaf框架项目上使用的, 支持手动选择读写和事务连接, 供大伙参考用。
注意: php版本需求 > 7.0
class Pdo_Initiator
{
/**
* 实例化容器
* @var array
*/
protected static $_container = [];
/**
* 获取对象单例
* @access public
* @return self
*/
public static function instance()
{
if (empty(static::$_container[static::class]) || array_key_exists(static::class, static::$_container) == false) {
static::$_container[static::class] = new static();
}
return static::$_container[static::class];
}
/**
* 初始化配置
* @access private static
* @return array
*/
private static function _initConfig(): array
{
$config = Yaf\Registry::get('config');
$db = $config->db;
$redis = $config->redis;
return [
'host' => $db->host,
'port' => $db->port,
'user' => $db->user,
'password' => $db->password,
'charset' => $db->charset,
'dbname' => $db->dbname,
'prefix' => $db->prefix,
'persistent' => 0,
'log' => 1,
'redis_ip' => $redis->host,
'redis_port' => $redis->port,
'redis_auth' => $redis->auth,
'redis_db' => $redis->sql_cache,
'redis_log' => $redis->log,
];
}
/**
* 获取读数据用句柄
* @access protected
* @return object
*/
protected function on()
{
return new \Pdo_Worker(self::_initConfig());
}
}