本文默认框架入口文件名为index.php,系统配置是指index.php里面$system变量部分,在index.php里面你会看到一个名为$system的配置数组,下面对每项进行说明.
/** * --------------------系统配置------------------------- */ /** * 如果开启了URL Rewrite 功能,请在这里设置为TRUE,没有开启请设置为FALSE * 该配置会影响url()函数生成的href链接 */ $system['url_rewrite'] = FALSE; /** * 程序文件夹路径名称,也就是所有的程序文件比如控制器文件夹, * 模型文件夹,视图文件夹等所在的文件夹名称。 */ $system['application_folder'] = realpath('.') . '/' . 'application'; /** * 存放控制器文件的文件夹路径名称 */ $system['controller_folder'] = $system['application_folder'] . '/controllers'; /** * 存放模型文件的文件夹路径名称,支持数组 */ $system['model_folder'] = $system['application_folder'] . '/models'; /** * 存放视图文件的文件夹路径名称,支持数组 */ $system['view_folder'] = $system['application_folder'] . '/views'; /** * 存放类库文件的文件夹路径名称,存放在该文件夹的类库中的类会自动加载,支持数组 */ $system['library_folder'] = $system['application_folder'] . '/library'; /** * 存放函数文件的文件夹路径名称,支持数组 */ $system['helper_folder'] = $system['application_folder'] . '/helper'; /** * table()方法缓存表字段信息的文件夹路径名称 */ $system['table_cache_folder'] = $system['application_folder'] . '/cache'; /** * 存放HMVC模块的文件夹路径名称 */ $system['hmvc_folder'] = $system['application_folder'] . '/modules'; /** * 注册HMVC模块,这里填写模块名称关联数组,键是url中的模块别名,值是模块文件夹名称 */ $system['hmvc_modules'] = array('demo' => 'hmvc_demo'); /** * 404错误文件的路径,该文件会在系统找不到相关内容时显示, * 文件里面可以使用$msg变量获取出错提示内容 */ $system['error_page_404'] = 'application/error/error_404.php'; /** * 系统错误文件的路径,该文件会在发生Fatal错误和Exeption时显示, * 文件里面可以使用$msg变量获取出错提示内容 */ $system['error_page_50x'] = 'application/error/error_50x.php'; /** * 数据库错误文件的路径,该文件会在发生数据库错误时显示, * 文件里面可以使用$msg变量获取出错提示内容 */ $system['error_page_db'] = 'application/error/error_db.php'; /** * $this->message()方法默认使用的视图,该视图会在第4个参数为null时使用。 * 视图里面可以使用的有三个变量:$msg提示内容,$url跳转的url,$time停留时间。 * 这里需要填写的是视图名称,不带视图后缀。没有就留空。 */ $system['message_page_view'] = ''; /** * 默认控制器文件名称,不包含后缀,支持子文件夹,比如home.welcome, * 就是控制器文件夹下面的home文件夹里面welcome.php(假定后缀是.php) */ $system['default_controller'] = 'welcome'; /** * 默认控制器方法名称,不要带前缀 */ $system['default_controller_method'] = 'index'; /** * 控制器方法名称前缀 */ $system['controller_method_prefix'] = 'do'; /** * 控制器文件名称后缀,比如.php或者.controller.php */ $system['controller_file_subfix'] = '.php'; /** * 模型文件名称后缀,比如.model.php */ $system['model_file_subfix'] = '.model.php'; /** * 视图文件名称后缀,比如.view.php' */ $system['view_file_subfix'] = '.view.php'; /** * 类库文件名称后缀,比如.class.php' */ $system['library_file_subfix'] = '.class.php'; /** * 函数文件名称后缀,比如.php' */ $system['helper_file_subfix'] = '.php'; /** * 自定义Loader,用于拓展框架核心功能, * Loader是控制器和模型都继承的一个类,大部分核心功能都在loader中完成。 * 这里是自定义Loader类文件的完整路径 * 自定义Loader文件名称和类名称必须是: * 文件名称:类名.class.php * 比如:MyLoader.class.php,文件里面的类名就是:MyLoader * 注意: * 1.自定义Loader必须继承MpLoader。 * 2.一个最简单的Loader示意:(假设文件名称是:MyLoader.class.php) * class MyLoader extends MpLoader { * public function __construct() { * parent::__construct(); * } * } * 3.如果无需自定义Loader,留空即可。 * 4.自定义Loader在框架核心文件被包含时生效,此后修改$system['my_loader']无效。 */ $system['my_loader'] = ''; /** * 自动加载的helper文件,比如:array($item); * $item是helper文件名或者"配置数组",不包含后缀。 * 比如: html 或者配置数组array('html'=>false), * 这里的数组key是helper文件,值就是$is_config参数,是true或者false。 */ $system['helper_file_autoload'] = array(); /** * 自动加载的library文件,比如array($item); * $item是library文件名或者"配置数组",不包含后缀, * 比如: ImageTool 或者配置数组array('ImageTool'=>'image'), * 或者配置数组array('ImageTool'=>'image','new'=>fasle) * 配置数组的作用是为长的类库名用别名代替. */ $system['library_file_autoload'] = array(); /** * 自动加载的model,比如array($item); * $item是model文件名或者"配置数组",不包含后缀, * 比如: UserModel 或者配置数组 array('UserModel'=>'user') * 配置数组的作用是为长的model名用别名代替. */ $system['models_file_autoload'] = array(); /** * 控制器方法名称是否首字母大写,默认true */ $system['controller_method_ucfirst'] = TRUE; /** * 是否自动连接数据库,默认FALSE */ $system['autoload_db'] = FALSE; /** * 是否开启调试模式 * true:显示错误信息, * false:所有错误将不显示 */ $system['debug'] = TRUE; /** * 是否接管错误信息显示 * true:所有错误信息将由系统格式化输出 * false:所有错误信息将原样输出 */ $system['error_manage'] = FALSE; /** * 是否开启错误日志记录 * true:开启,如果开启了,系统将接管错误信息输出,忽略system['error_manage']和$system['db']['default']['db_debug'], * 同时务必设置自己的错误日志记录处理方法 * false:关闭 * 提示: * 数据库错误信息是否显示是由:$system['debug']和db_debug($system['db']['default']['db_debug'])控制的。 * 只用都为TRUE时才会显示。 */ $system['log_error'] = FALSE; /* * --------------------------------错误日志记录处理配置----------------------- * 错误日志记录处理方法,可以是一个“函数名称”或是“类的静态方法”用数组方式array('class_name'=>'method_name')。 * 提示: * 1.如果是类,把类按着类库的命名方式命名,然后放到类库目录即可; * 2.如果是函数,把函数放到一个helper文件里面,然后在$system['helper_file_autoload']自动加载的helper文件里面填写上这个helper文件即可。 * 3.留空则不处理。 * 4.系统会传递给error、exception处理方法5个参数:($errno, $errstr, $errfile, $errline,$strace) * 参数说明: * $errno:错误级别,就是PHP里面的E_NOTICE之类的静态变量,错误级别和具体含义对应关系如下,键是代码,值是代码含义。 * array('0'=>'EXCEPTION',//异常信息 * '1' => 'ERROR',//致命的运行时错误。这类错误一般是不可恢复的情况,例如内存分配导致的问题。后果是导致脚本终止不再继续运行。 * '2' => 'WARNING', //运行时警告 (非致命错误)。仅给出提示信息,但是脚本不会终止运行。 * '4' => 'PARSE', //编译时语法解析错误。解析错误仅仅由分析器产生。 * '8' => 'NOTICE', //运行时通知。表示脚本遇到可能会表现为错误的情况,但是在可以正常运行的脚本里面也可能会有类似的通知。 * '16' => 'CORE_ERROR', //在PHP初始化启动过程中发生的致命错误。该错误类似 E_ERROR,但是是由PHP引擎核心产生的。 * '32' => 'CORE_WARNING',//PHP初始化启动过程中发生的警告 (非致命错误) 。类似 E_WARNING,但是是由PHP引擎核心产生的。 * '64' => 'COMPILE_ERROR', //致命编译时错误。类似E_ERROR, 但是是由Zend脚本引擎产生的。 * '128' => 'COMPILE_WARNING', //编译时警告 (非致命错误)。类似 E_WARNING,但是是由Zend脚本引擎产生的。 * '256' => 'USER_ERROR', //用户产生的错误信息。类似 E_ERROR, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。 * '512' => 'USER_WARNING', //用户产生的警告信息。类似 E_WARNING, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。 * '1024' => 'USER_NOTICE',//用户产生的通知信息。类似 E_NOTICE, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。 * '2048' => 'STRICT', //启用 PHP 对代码的修改建议,以确保代码具有最佳的互操作性和向前兼容性。 * '4096' => 'RECOVERABLE_ERROR'//可被捕捉的致命错误。 它表示发生了一个可能非常危险的错误,但是还没有导致PHP引擎处于不稳定的状态。 如果该错误没有被用户自定义句柄捕获 (参见 set_error_handler()),将成为一个 E_ERROR 从而脚本会终止运行。 * '8192' => 'DEPRECATED', //(php5.3)运行时通知。启用后将会对在未来版本中可能无法正常工作的代码给出警告。 * '16384' => 'USER_DEPRECATED', //(php5.3)用户产少的警告信息。 类似 E_DEPRECATED, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。 * ); * 可以通过判断错误级别,然后有针对性的处理。一般我们需要处理的就是致命错误(0,1,4)和一般错误(2,8,2048,8192). * $errstr:具体的错误信息 * $errfile:出错的文件完整路径 * $errline:出错的行号 * $strace: 调用堆栈信息 * 系统会传递给db_error处理方法2个参数:($errmsg,$strace) * 参数说明: * $errmsg:具体的数据库错误信息 * $strace:调用堆栈信息 * 错误控制类参考: * http://git.oschina.net/snail/microphp/blob/development/tests/app/library/ErrorHandle.class.php */ $system['log_error_handle'] = array( 'error' => '', //array('ErrorHandle' => 'error_handle'), 'exception' => '', //array('ErrorHandle' => 'exception_handle'), 'db_error' => '', //array('ErrorHandle' => 'db_error_handle') ); /** * 默认时区,PRC是中国 */ $system['default_timezone'] = 'PRC'; /** * ---------------------------自定义URL路由规则------------------------ * 比如: * (1).http://localhost/index.php?welcome.index * (2).http://localhost/index.php/welcome.index * (3).http://localhost/index.php?news/welcome.index * (4).http://localhost/index.php/news/welcome.index * 路由字符串是welcome.index(不包含最前面的?、/、模块名称),路由规则都是针对“路由字符串”的。 * 现在定义路由规则: * $system['route']=array( * "/^welcome/?(.*)$/u"=>'welcome.ajax/$1' * ); * 路由规则说明: * 1.路由规则是一个关联数组 * 2.数组的key是匹配“路由字符串”的正则表达式,其实就是preg_match的第一个参数。 * 3.数组的value是替换后的路由字符串 * 4.系统使用的url路由就是最后替换后的路由字符串 */ $system['route'] = array( //"/^welcome/?(.*)$/u" => 'welcome.ajax/$1', ); /** * ---------------------缓存配置----------------------- */ /** * 自定义缓存类文件的路径是$system['cache_drivers']的一个元素, * 可以有多个自定义缓存类。 * 缓存类文件名称命名规范是: * 比如文件名是mycahe.php,那么文件mycahe.php * 里面的缓存类就是:class phpfastcache_mycahe{......} * mycahe.php的编写规范请参考: * http://git.oschina.net/snail/microphp/blob/development/modules/cache-drivers/drivers/example.php */ $system['cache_drivers'] = array(); /** * 缓存配置项 */ $system['cache_config'] = array( /* * 默认存储方式 * 可用的方式有:auto,apc,files,sqlite,memcached,redis,wincache,xcache,memcache * auto自动模式寻找的顺序是 : apc,apc,files,sqlite,memcached,redis,wincache,xcache,memcache */ "storage" => "auto", /* * 默认缓存文件存储的路径 * 使用绝对全路径,比如: /home/username/cache * 留空,系统自己选择 */ "path" => $system['application_folder'] . "/cache", // 缓存文件存储默认路径,使用files缓存的时候确保文件夹存在而且可写 /* * 第二驱动 * 比如:当你现在在代码中使用的是memcached, apc等等,然后你的代码转移到了一个新的服务器而且不支持memcached 或 apc * 这时候怎么办呢?设置第二驱动即可,当你设置的驱动不支持的时候,系统就使用第二驱动。 * $key是你设置的驱动,当设置的“storage”=$key不可用时,就使用$key对应的$value驱动 */ "fallback" => array( "memcache" => "files", "memcached" => "files", "redis" => "files", "wincache" => "files", "xcache" => "files", "apc" => "files", "sqlite" => "files", ), /* * Memcache服务器地址; */ "server" => array( array("127.0.0.1", 11211, 1), // array("new.host.ip",11211,1), ), /* * Redis服务器地址; */ "redis" => array( 'type' => 'tcp', //sock,tcp;连接类型,tcp:使用host port连接,sock:本地sock文件连接 'prefix' => @$_SERVER['HTTP_HOST'], //key的前缀,便于管理查看,在set和get的时候会自动加上和去除前缀,无前缀请保持null 'sock' => '', //sock的完整路径 'host' => '127.0.0.1', 'port' => 6379, 'password' => NULL, //密码,如果没有,保持null 'timeout' => 0, //0意味着没有超时限制,单位秒 'retry' => 100, //连接失败后的重试时间间隔,单位毫秒 'db' => 0, // 数据库序号,默认0, 参考 http://redis.io/commands/select ), ); /** * -----------------------SESSION管理配置--------------------------- */ $system['session_handle'] = array( 'handle' => '', //支持的管理类型:mongodb,mysql,memcache,redis。留空则不管理,使用默认 'common' => array( 'autostart' => true, //是否自动session_start() 'cookie_path' => '/', 'cookie_domain' => '.' . @$_SERVER['HTTP_HOST'], 'session_name' => 'PHPSESSID', 'lifetime' => 3600, // session lifetime in seconds ), 'mongodb' => array( 'host' => '127.0.0.1', 'port' => 27017, 'user' => 'root', 'password' => 'local', 'database' => 'local', // name of MongoDB database 'collection' => 'session', // name of MongoDB collection // persistent related vars 'persistent' => false, // persistent connection to DB? 'persistentId' => 'MongoSession', // name of persistent connection // whether we're supporting replicaSet 'replicaSet' => false, ), /** * mysql表结构 * CREATE TABLE `session_handler_table` ( `id` varchar(255) NOT NULL, `data` mediumtext NOT NULL, `timestamp` int(255) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`,`timestamp`), KEY `timestamp` (`timestamp`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; */ 'mysql' => array( 'host' => '127.0.0.1', 'port' => 3306, 'user' => 'root', 'password' => 'admin', 'database' => 'test', 'table' => 'session_handler_table', ), /** * memcache采用的是session.save_handler管理机制 * 需要php安装memcache拓展支持 */ 'memcache' => "tcp://127.0.0.1:11211", /** * redis采用的是session.save_handler管理机制 * 需要php安装redis拓展支持,你可以在https://github.com/nicolasff/phpredis 找到该拓展。 */ 'redis' => "tcp://127.0.0.1:6379", ); /** * ------------------------数据库配置---------------------------- */ /** * 默认使用的数据库组名称,名称就是下面的$system['db'][$key]里面的$key, * 可以自定义多个数据库组,然后根据不同的环境选择不同的组作为默认数据库连接信息 */ $system['db']['active_group'] = 'default'; /** * dbdriver:可用的有mysql,mysqli,pdo,sqlite3,配置见下面 */ /** * mysql数据库配置示例 */ $system['db']['default']['dbdriver'] = "mysql"; $system['db']['default']['hostname'] = '127.0.0.1'; $system['db']['default']['port'] = '3306'; $system['db']['default']['username'] = 'root'; $system['db']['default']['password'] = 'admin'; $system['db']['default']['database'] = 'test'; $system['db']['default']['dbprefix'] = ''; $system['db']['default']['pconnect'] = TRUE; $system['db']['default']['db_debug'] = TRUE; $system['db']['default']['char_set'] = 'utf8'; $system['db']['default']['dbcollat'] = 'utf8_general_ci'; $system['db']['default']['swap_pre'] = ''; $system['db']['default']['autoinit'] = TRUE; $system['db']['default']['stricton'] = FALSE; /* * PDO database config demo * 1.pdo sqlite3 * */ /** * sqlite3数据库配置示例 */ $system['db']['sqlite3']['dbdriver'] = "sqlite3"; $system['db']['sqlite3']['database'] = 'sqlite:d:/wwwroot/sdb.db'; $system['db']['sqlite3']['dbprefix'] = ''; $system['db']['sqlite3']['db_debug'] = TRUE; $system['db']['sqlite3']['char_set'] = 'utf8'; $system['db']['sqlite3']['dbcollat'] = 'utf8_general_ci'; $system['db']['sqlite3']['swap_pre'] = ''; $system['db']['sqlite3']['autoinit'] = TRUE; $system['db']['sqlite3']['stricton'] = FALSE; /** * PDO mysql数据库配置示例,hostname 其实就是pdo的dsn部分, * 如果连接其它数据库按着pdo的dsn写法连接即可 */ $system['db']['pdo_mysql']['dbdriver'] = "pdo"; $system['db']['pdo_mysql']['hostname'] = 'mysql:host=localhost;port=3306'; $system['db']['pdo_mysql']['username'] = 'root'; $system['db']['pdo_mysql']['password'] = 'admin'; $system['db']['pdo_mysql']['database'] = 'test'; $system['db']['pdo_mysql']['dbprefix'] = ''; $system['db']['pdo_mysql']['db_debug'] = TRUE; $system['db']['pdo_mysql']['char_set'] = 'utf8'; $system['db']['pdo_mysql']['dbcollat'] = 'utf8_general_ci'; $system['db']['pdo_mysql']['swap_pre'] = ''; $system['db']['pdo_mysql']['autoinit'] = TRUE; $system['db']['pdo_mysql']['stricton'] = FALSE; /** * -------------------------数据库配置结束-------------------------- */
Powered By 狂奔的蜗牛 | 历史版本 | 源代码 | 快速入门 | MicroPHP@开源中国
源代码许可证 Apache License v2.0
MicroPHP官方QQ交流群 : 42807575 , 有问题欢迎加群交流