You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
164 lines
4.8 KiB
164 lines
4.8 KiB
<?php
|
|
|
|
/**
|
|
* 配置类
|
|
*/
|
|
|
|
namespace base;
|
|
|
|
class Config {
|
|
|
|
/**
|
|
* 全局配置
|
|
* @var array
|
|
*/
|
|
static protected $config = array();
|
|
|
|
/**
|
|
* 初始化配置
|
|
* @param string $basePath 项目目录
|
|
* @return void
|
|
*/
|
|
static public function init($basePath = '') {
|
|
|
|
self::$config = array(
|
|
'ENV' => 'development',
|
|
'DEBUG' => true,
|
|
'LOG_ON' => false,
|
|
'LOG_PATH' => $basePath . 'data/logs/',
|
|
'TIMEZONE' => 'PRC',
|
|
|
|
'REWRITE_ON' =>false,
|
|
'REWRITE_RULE' =>array(
|
|
//'<app>/<c>/<a>'=>'<app>/<c>/<a>',
|
|
),
|
|
|
|
'DEFAULT_APP' => 'main',
|
|
'DEFAULT_CONTROLLER' => 'Default',
|
|
'DEFAULT_ACTION' => 'index',
|
|
|
|
'DB'=>array(
|
|
'default'=>array(
|
|
'DB_TYPE' => 'MysqlPdo',
|
|
'DB_HOST' => 'localhost',
|
|
'DB_USER' => 'root',
|
|
'DB_PWD' => '',
|
|
'DB_PORT' => 3306,
|
|
'DB_NAME' => 'cp',
|
|
'DB_CHARSET' => 'utf8',
|
|
'DB_PREFIX' => '',
|
|
'DB_CACHE' => 'DB_CACHE',
|
|
'DB_SLAVE' => array(),
|
|
/*
|
|
'DB_SLAVE' => array(
|
|
array(
|
|
'DB_HOST' => '127.0.0.1',
|
|
),
|
|
array(
|
|
'DB_HOST' => '127.0.0.2',
|
|
),
|
|
),
|
|
*/
|
|
),
|
|
),
|
|
|
|
'TPL'=>array(
|
|
'TPL_PATH' => $basePath,
|
|
'TPL_SUFFIX' => '.html',
|
|
'TPL_CACHE' => 'TPL_CACHE',
|
|
'TPL_DEPR' => '_',
|
|
'TPL_TEMPLATE' => 'default',
|
|
),
|
|
|
|
'CACHE'=>array(
|
|
'TPL_CACHE' => array(
|
|
'CACHE_TYPE' => 'FileCache',
|
|
'CACHE_PATH' => $basePath . 'data/caches/',
|
|
'GROUP' => 'tpl',
|
|
'HASH_DEEP' => 0,
|
|
),
|
|
|
|
'DB_CACHE' => array(
|
|
'CACHE_TYPE' => 'FileCache',
|
|
'CACHE_PATH' => $basePath . 'data/caches/',
|
|
'GROUP' => 'db',
|
|
'HASH_DEEP' => 2,
|
|
),
|
|
),
|
|
|
|
'STORAGE'=>array(
|
|
'default'=>array('STORAGE_TYPE'=>'File'),
|
|
),
|
|
);
|
|
}
|
|
|
|
/**
|
|
* 加载配置文件
|
|
* @param string $file 配置路径
|
|
*/
|
|
static public function loadConfig($file){
|
|
if( !file_exists($file) ){
|
|
throw new \Exception("Config file '{$file}' not found", 500);
|
|
}
|
|
$config = require($file);
|
|
foreach($config as $k=>$v){
|
|
if( is_array($v) ){
|
|
if( !isset(self::$config[$k]) ) self::$config[$k] = array();
|
|
self::$config[$k] = array_merge((array)self::$config[$k], $config[$k]);
|
|
}else{
|
|
self::$config[$k] = $v;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取配置项
|
|
* @param string $key 配置名
|
|
* @return mixed
|
|
*/
|
|
static public function get($key=NULL){
|
|
if( empty($key) ) return self::$config;
|
|
$arr = explode('.', $key);
|
|
switch( count($arr) ){
|
|
case 1 :
|
|
if( isset(self::$config[ $arr[0] ])) {
|
|
return self::$config[ $arr[0] ];
|
|
}
|
|
break;
|
|
case 2 :
|
|
if( isset(self::$config[ $arr[0] ][ $arr[1] ])) {
|
|
return self::$config[ $arr[0] ][ $arr[1] ];
|
|
}
|
|
break;
|
|
case 3 :
|
|
if( isset(self::$config[ $arr[0] ][ $arr[1] ][ $arr[2] ])) {
|
|
return self::$config[ $arr[0] ][ $arr[1] ][ $arr[2] ];
|
|
}
|
|
break;
|
|
default: break;
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
/**
|
|
* 设置配置项
|
|
* @param string $key 配置名
|
|
* @param mixed $value 配置值
|
|
*/
|
|
static public function set($key, $value){
|
|
$arr = explode('.', $key);
|
|
switch( count($arr) ){
|
|
case 1 :
|
|
self::$config[ $arr[0] ] = $value;
|
|
break;
|
|
case 2 :
|
|
self::$config[ $arr[0] ][ $arr[1] ] = $value;
|
|
break;
|
|
case 3 :
|
|
self::$config[ $arr[0] ][ $arr[1] ][ $arr[2] ] = $value;
|
|
break;
|
|
default: return false;
|
|
}
|
|
return true;
|
|
}
|
|
}
|
|
|