Ejemplo n.º 1
0
 public function __construct()
 {
     $config = Core_Config::load('redis');
     if (!isset($config['default'])) {
         throw new Core_Exception_Fatal('没有找到 ' . $module . ' 模块的 redis 配置信息,请检查 redis.conf.php');
     }
     $this->_config = $config['default'] + $this->_config;
 }
Ejemplo n.º 2
0
 /**
  * 取得DB连接
  *
  * @param string $dbName
  * @return void
  */
 public static function get($dbName)
 {
     // 获取数据库连接配置
     $dbConf = Core_Config::load('Db');
     if (!$dbConf || !is_array($dbConf)) {
         throws("Empty DB CONFIG  please check db.conf.php file", 'sql');
     }
     $dbServer = $dbConf[$dbName];
     if (!$dbServer) {
         throws('Invalid DB configuration [' . $dbName . '], plz check: db.conf.php', 'sql');
     }
     if (!isset(self::$_dbs[$dbName])) {
         // 创建数据库连接实例
         self::$_dbs[$dbName] = new Com_Db_Pdo($dbServer, $dbConf['persistent'], $dbConf['emulate_prepare']);
     }
     return self::$_dbs[$dbName];
 }
Ejemplo n.º 3
0
 protected function __construct()
 {
     if (!defined('DS')) {
         define('DS', DIRECTORY_SEPARATOR);
     }
     require SYS_PATH . 'Core' . DS . 'Bootstrap.php';
     // 加载配置助手类
     require SYS_PATH . 'Core' . DS . 'Config.php';
     // 加载核心函数
     require SYS_PATH . 'Core' . DS . 'Function.php';
     // 加载类加载助手类
     require SYS_PATH . 'Core' . DS . 'Loader.php';
     // 加载全局变量
     Core_Config::load("Global");
     // 框架初始化
     Core_Bootstrap::init();
     // 设置文件检索目录
     set_include_path('.' . PATH_SEPARATOR . APP_PATH . PATH_SEPARATOR . APP_PATH . DS . 'Library' . PATH_SEPARATOR . SYS_PATH);
     // 类的自动加载
     spl_autoload_register(array($this, 'autoload'));
 }
Ejemplo n.º 4
0
 /**
  * 获取哈希分表名(拆分数量无上限)
  * 后缀为十六进制,从 _0~_f, _00~_ff, _000~_fff ... 会补全0前缀
  *
  * @param string $orgTableName
  * @param string $hashKey
  * @param int $hashNum 分表数量,无上限
  * @return string
  */
 public static function tableName($orgTableName, $hashKey, $hashNum = null)
 {
     if (!$hashKey) {
         return $orgTableName;
     }
     $tblConf = Core_Config::load('table');
     // 分库数量,缺省1
     if ($hashNum === null) {
         $hashNum = isset($tblConf[$orgTableName]['hash_num']) ? $tblConf[$orgTableName]['hash_num'] : 1;
     }
     if ($hashNum <= 1) {
         return $orgTableName;
     }
     // 拆表没有上限,分表后缀是十六进制,会补全0前缀
     if (in_array($hashNum, array(16, 256, 4096))) {
         $tblSuffix = substr(md5($hashKey), 0, log($hashNum, 16));
     } else {
         $tblSuffix = str_pad(dechex(hexdec(substr(md5($hashKey), 0, 4)) % $hashNum), ceil(log($hashNum, 16)), '0', STR_PAD_LEFT);
     }
     return $orgTableName . '_' . $tblSuffix;
 }
Ejemplo n.º 5
0
 public static function parse($pathInfo)
 {
     $routerConfig = Core_Config::load('Router');
     if (NULL == $pathInfo) {
         $pathInfo = self::getPathInfo();
     }
     $pathInfos = $pathInfo ? explode('/', trim($pathInfo, '/')) : array();
     if (!$pathInfos) {
         return $routerConfig["DefaultDispatchInfo"];
     }
     $controller = array_shift($pathInfos);
     $controller = $controller ? ucfirst($controller) : $routerConfig["DefaultDispatchInfo"]["controller"];
     $action = array_shift($pathInfos);
     $action = $action ? $action : $routerConfig["DefaultDispatchInfo"]["action"];
     // 解析GET参数,例如:
     // _directory/controller/action/k1/v1/k2/v2
     // 从 action 后的 key1 开始为 k/v 组合参数串
     // *因为前面已经两次 array_shift 弹出数组头元素
     // 所以此时的 $pathInfos 数组值已经是: array(k1, v1, k2, v2),那么再转为关联数组即可 array(k1 => v1, k2 => v2)
     $params = $pathInfos ? Helper_Array::assoc($pathInfos) : array();
     // 解析pathinfo风格URL
     return array('controller' => $controller, 'action' => $action, 'params' => $params);
 }