首页 > 代码库 > ThinkPHP源码阅读2-----C函数配置文件详解
ThinkPHP源码阅读2-----C函数配置文件详解
ThinkPHP的配置非常灵活,可自定义加载.大概看了一下,一共有这几个地方会加载配置文件,方便以后的读取
/** * 获取和设置配置参数 支持批量定义 * * @param string|array $name * 配置变量 * @param mixed $value * 配置值 * @return mixed */ function C($name = null, $value = http://www.mamicode.com/null) {>
C()函数在运行的时候,就会把配置文件中的配置都加载到C()函数中,以后只要需要的提取出来即可,而且可以临时增加自己的C函数
1.Think.class.php buildApp方法,加载公共配置文件Conf/convention.php,缓存到C方法里
// 加载核心惯例配置文件Think.class.php第60行 C(include THINK_PATH.‘Conf/convention.php‘); if(isset($mode[‘config‘])) {// 加载模式配置文件 C( is_array($mode[‘config‘])?$mode[‘config‘]:include $mode[‘config‘] ); }
2.加载项目的config.php文件
// 加载项目配置文件 Think.class.php第66行 if(is_file(CONF_PATH.‘config.php‘)) C(include CONF_PATH.‘config.php‘);
3.加载系统标签配置文件ThinkPHP/Conf/tags.php文件,C(‘extends‘);
// 加载模式系统行为定义 if(C(‘APP_TAGS_ON‘)) { if(isset($mode[‘extends‘])) { C(‘extends‘,is_array($mode[‘extends‘])?$mode[‘extends‘]:include $mode[‘extends‘]); }else{ // 默认加载系统行为扩展定义 C(‘extends‘, include THINK_PATH.‘Conf/tags.php‘); } }
4.加载应用标签配置APP/Conf/tags.php C(‘extends‘);
// 加载应用行为定义 if(isset($mode[‘tags‘])) { C(‘tags‘, is_array($mode[‘tags‘])?$mode[‘tags‘]:include $mode[‘tags‘]); }elseif(is_file(CONF_PATH.‘tags.php‘)){ // 默认加载项目配置目录的tags文件定义 C(‘tags‘, include CONF_PATH.‘tags.php‘); }5.如果是调试模式,则加载ThinkPHP/Conf/debug.php,和应用状态调试文件
if(APP_DEBUG) { // 调试模式加载系统默认的配置文件 C(include THINK_PATH.‘Conf/debug.php‘); // 读取调试模式的应用状态 $status = C(‘APP_STATUS‘); // 加载对应的项目配置文件 if(is_file(CONF_PATH.$status.‘.php‘)) // 允许项目增加开发模式配置定义 C(include CONF_PATH.$status.‘.php‘); }else{ // 部署模式下面生成编译文件 build_runtime_cache($compile); }
6.App:init 调用function.php中得load_ext_file函数,加载自定义配置文件
在function.php中load_ext_file()函数中
/** * 加载动态扩展文件 * @return void */ function load_ext_file() { // 加载自定义外部文件 if(C(‘LOAD_EXT_FILE‘)) { $files = explode(‘,‘,C(‘LOAD_EXT_FILE‘)); foreach ($files as $file){ $file = COMMON_PATH.$file.‘.php‘; if(is_file($file)) include $file; } } // 加载自定义的动态配置文件 if(C(‘LOAD_EXT_CONFIG‘)) { $configs = C(‘LOAD_EXT_CONFIG‘); if(is_string($configs)) $configs = explode(‘,‘,$configs); foreach ($configs as $key=>$config){ $file = CONF_PATH.$config.‘.php‘; if(is_file($file)) { is_numeric($key)?C(include $file):C($key,include $file); } } } }
本文出自 “尛雷” 博客,请务必保留此出处http://a3147972.blog.51cto.com/2366547/1413056
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。