<?php /** * @brief 数据库代理模式写法 */ namespace lib\DbMysql; class DbMysql{ private static $_instance; private static $_slave; private static $_master; function __construct() { self::$_slave = slave_db(); self::$_master = master_db(); } // 防止克隆对象 private function __clone() { // TODO: Implement __clone() method. } // 判断$_instance是否是Proxy的对象,没有则创建。 static public function getInstance(){ if ( !self::$_instance instanceof self ){ self::$_instance = new self(); } return self::$_instance; } /** * @desc 获取sql语句执行的db方法 * @param $sql * @return \MySql|null */ static public function getDbMothed($sql=''){ if ( $sql && strtolower(substr(trim($sql),0,6)) == 'select'){ return self::$_slave_db; } else { return self::$_db; } } /** * @desc 判断是否是预发布环境 * @return bool */ static public function isPreRelease() { return isset($_COOKIE['staging']) && 'true' === $_COOKIE['staging']; } }
?>