繼上一篇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()); } }