/** * 构造函数 * * @access public * * @param array $params 数据库连接参数,如主机名,数据库用户名,密码等 * * @return boolean */ public function __construct($options = null) { if (!extension_loaded('redis')) { Controller::halt('The redis extension to be loaded!'); } //当参数为空时,程序则自动加载配置文件中数据库连接参数 if (!$options || !is_array($options)) { $options = Configure::get('redis'); if (!$options) { $options = array(); } } $options += $this->_defaultOptions; //连接数据库 $this->_Redis = new Redis(); $connect = !$options['persistent'] ? 'connect' : 'pconnect'; $return = $this->_Redis->{$connect}($options['host'], $options['port'], $options['expire']); if ($return && $options['password']) { $return = $this->_Redis->auth($options['password']); } if ($return && $options['database']) { $return = $this->_Redis->select($options['database']); } return $return; }
/** * 构造函数 * * @access public * @return boolean */ public function __construct() { $options = Configure::get('cookie'); $this->_options = $options && is_array($options) ? $options : array(); $this->_options += $this->_defaultOptions; return true; }
/** * 加载自定义配置文件所引导的文件 * * @access private * * @param string $className 所需要加载的类的名称,注:不含后缀名 * * @return void */ private static function _loadImportConfigFile($className) { //定义自动加载状态。(true:已加载/false:未加载) $atuoLoadStatus = false; //分析配置文件import引导信息 $importRules = Configure::get('import'); //当配置文件引导信息合法时 if ($importRules && is_array($importRules)) { foreach ($importRules as $rules) { if (!$rules) { continue; } //当配置文件引导信息中含有*'时,将设置的规则中的*替换为所要加载的文件类名 if (strpos($rules, '*') !== false) { $filePath = str_replace('*', $className, $rules); } else { $filePath = $rules . DS . str_replace('_', DS, $className) . '.php'; } //当自定义自动加载的文件存在时 if (is_file($filePath)) { //加载文件 Doit::loadFile($filePath); $atuoLoadStatus = true; break; } } } return $atuoLoadStatus; }
/** * 构造方法 * * 用于初始化运行环境,或对基本变量进行赋值 * * @access public * * @param array $params 数据库连接参数,如主机名,数据库用户名,密码等 * * @return boolean */ public function __construct($params = array()) { if (!extension_loaded('mongo')) { Controller::halt('The mongo extension to be loaded!'); } //参数分析 if (!$params || !is_array($params)) { //加载数据库配置文件. $params = Configure::get('mongo'); } $params = is_array($params) ? $params + $this->_defaultConfig : $this->_defaultConfig; if (!isset($params['dbname']) || !$params['dbname']) { Controller::halt('The file of MongoDB config is error, dbname is not found!'); } try { //实例化mongo $this->_mongo = new Mongo($params['dsn'], $params['option']); //连接mongo数据库 $this->_dbLink = $this->_mongo->selectDB($params['dbname']); //用户登录 if (isset($params['username']) && isset($params['password'])) { $this->_dbLink->authenticate($params['username'], $params['password']); } return true; } catch (Exception $exception) { //抛出异常信息 throw new DoitException('MongoDb connect error!<br/>' . $exception->getMessage(), $exception->getCode()); } }
/** * 设置session最大存活时间. * * @access protected * @return boolean */ protected static function _setTimeout() { //获取session的系统配置信息 $configExpire = Configure::get('session.expire'); if (!$configExpire) { return false; } return ini_set('session.gc_maxlifetime', $configExpire); }
/** * 静态加载项目设置目录(config目录)中的配置文件 * * 加载项目设置目录(config)中的配置文件,当第一次加载后,第二次加载时则不再重新加载文件。返回结果为配置文件内容,默认为数据格式为数组 * * @access public * * @param string $configName 所要加载的配置文件名 注:不含后缀名 * * @return array */ public static function getConfig($configName) { return Configure::getConfig($configName); }
/** * 获取当前日志文件名 * * @example * * $this->_getLogFilePath('sql'); * 或 * $this->_getLogFilePath('2014-11.2014-11-23'); * 或 * $this->_getLogFilePath('2014-11/2014-11-23'); * * @access private * * @param $logFileName 日志文件名 * * @return string */ private static function _getLogFilePath($logFileName = null) { //参数分析 if ($logFileName && strpos($logFileName, '.') !== false) { $logFileName = str_replace('.', '/', $logFileName); } //组装日志文件路径 $logFilePath = rtrim(Configure::get('application.logPath'), '/'); if (!$logFileName) { $logFilePath .= DS . date('Y-m') . '/' . date('Y-m-d'); } else { if (strpos($logFileName, '/') !== false) { $logFilePath .= DS . $logFileName; } else { $logFilePath .= DS . date('Y-m') . '/' . $logFileName; } } $logFilePath .= '.log'; return $logFilePath; }
/** * 构造方法 * * @access public * * @param array $params 数据库连接参数,如主机名,数据库用户名,密码等 * * @return boolean */ public function __construct($options = null) { //分析memcached扩展模块的加载 if (!extension_loaded('memcached')) { Controller::halt('The memcached extension to be loaded before use!'); } //获取Memcache服务器连接参数 if (!$options || !is_array($options)) { $options = Configure::get('memcached'); } if (is_array($options) && $options) { $this->_defaultOptions = $options + $this->_defaultOptions; } if (!$this->_defaultOptions['servers']) { $this->_defaultOptions['servers'][] = $this->_defaultServer; } $this->_Memcached = new Memcached(); foreach ($this->_defaultOptions['servers'] as $server) { $server += array('host' => '127.0.0.1', 'port' => 11211, 'persistent' => true); $this->_Memcached->addServer($server['host'], $server['port'], $this->_defaultOptions['persistent']); } return true; }
/** * 初始化常用的全局常量 * * 定义常用的全局常量:重写模式、路由分割符、伪静态网址的后缀、基本网址 * * @access private * * @param string $filePath 配置文件的路径 * * @return boolean */ private static function _init($filePath = null) { //加载对配置文件管理的类文件 self::loadFile(DOIT_ROOT . '/core/Configure.php'); //加载路由网址分析的类文件 self::loadFile(DOIT_ROOT . '/core/Router.php'); //加载Controller基类 self::loadFile(DOIT_ROOT . '/core/Controller.php'); //加载并分析项目的主配置文件 Configure::loadConfig($filePath); //定义是否开启调试模式。开启后,程序运行出现错误时,显示错误信息,便于程序调试。 if (!defined('DOIT_DEBUG')) { define('DOIT_DEBUG', Configure::get('application.debug')); } //定义URL的Rewrite功能是否开启。如开启后,需WEB服务器软件如:apache或nginx等,要开启Rewrite功能。 if (!defined('DOIT_REWRITE')) { define('DOIT_REWRITE', Configure::get('application.rewrite')); } //定义项目应用目录(application)的基本路径 if (!defined('BASE_PATH')) { define('BASE_PATH', rtrim(Configure::get('application.basePath'), '/')); } //定义项目缓存目录(cache)的基本路径 if (!defined('CACHE_PATH')) { define('CACHE_PATH', rtrim(Configure::get('application.cachePath'), '/')); } //定义项目入口文件的名称 if (!defined('ENTRY_SCRIPT_NAME')) { define('ENTRY_SCRIPT_NAME', basename($_SERVER['SCRIPT_NAME'])); } //定义网址路由的分割符。注:分割符不要与其它网址参数等数据相冲突 if (!defined('URL_SEGEMENTATION')) { define('URL_SEGEMENTATION', Configure::get('application.urlSegmentation')); } //定义路由网址的格式。注:get/path if (!defined('URL_FORMAT')) { define('URL_FORMAT', Configure::get('application.urlFormat')); } //定义视图文件格式 if (!defined('VIEW_EXT')) { define('VIEW_EXT', Configure::get('application.viewExt')); } //定义默认的Controller名称。注:为提高不同系统平台的兼容性,名称首字母要大写,其余小写 if (!defined('DEFAULT_CONTROLLER')) { define('DEFAULT_CONTROLLER', Configure::get('application.defaultController')); } //定义默认的Action名称。注:名称要全部使用小写字母 if (!defined('DEFAULT_ACTION')) { define('DEFAULT_ACTION', Configure::get('application.defaultAction')); } return true; }