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; }
/** * 取得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]; }
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')); }
/** * 获取哈希分表名(拆分数量无上限) * 后缀为十六进制,从 _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; }
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); }