ThinkPHP 的 C 函数实现原理
问题:ThinkPHP的C函数用于获取配置参数,我想知道它是如何获取配置文件里的参数的?
function C( $name =null, $value =null) { static $_config = array (); // 无参数时获取所有 if ( empty empty ( $name )) return $_config ; // 优先执行设置获取或赋值 if ( is_string ( $name )) { if (! strpos ( $name , '.' )) { $name = strtolower ( $name ); if ( is_null ( $value )) return isset( $_config [ $name ])? $_config [ $name ] : null; $_config [ $name ] = $value ; return ; } // 二维数组设置和获取支持 $name = explode ( '.' , $name ); $name [0] = strtolower ( $name [0]); if ( is_null ( $value )) return isset( $_config [ $name [0]][ $name [1]]) ? $_config [ $name [0]][ $name [1]] : null; $_config [ $name [0]][ $name [1]] = $value ; return ; } // 批量设置 if ( is_array ( $name )) return $_config = array_merge ( $_config , array_change_key_case ( $name )); return null; // 避免非法参数 } 以下是部分参数 return array ( 'APP_DEBUG' = > false, // 是否开启调试模式 'APP_DOMAIN_DEPLOY' = > false, // 是否使用独立域名部署项目 'APP_PLUGIN_ON' = > false, // 是否开启插件机制 'APP_FILE_CASE' = > false, // 是否检查文件的大小写 对Windows平台有效 'APP_GROUP_DEPR' = > '.' , // 模块分组之间的分割符 'APP_GROUP_LIST' = > '' , // 项目分组设定,多个组之间用逗号分隔,例如'Home,Admin' 'APP_AUTOLOAD_REG' = > false, // 是否开启SPL_AUTOLOAD_REGISTER 'APP_AUTOLOAD_PATH' = > 'Think.Util.' , // __autoLoad 机制额外检测路径设置,注意搜索顺序 'APP_CONFIG_LIST' = > array ( 'taglibs' , 'routes' , 'tags' , 'htmls' , 'modules' , 'actions' ), // 项目额外需要加载的配置列表,默认包括:taglibs(标签库定义),routes(路由定义),tags(标签定义),(htmls)静态缓存定义, modules(扩展模块),actions(扩展操作) )答:这个实际上不是ThinkPHP的问题域,是PHP的基础知识.
1.如下面是配置文件config.php.直接返回一个配置项数组.
return array ( 'APP_DEBUG' = > false, // 是否开启调试模式 'APP_DOMAIN_DEPLOY' = > false, // 是否使用独立域名部署项目 'APP_PLUGIN_ON' = > false, // 是否开启插件机制 'APP_FILE_CASE' = > false, // 是否检查文件的大小写 对Windows平台有效 'APP_GROUP_DEPR' = > '.' , // 模块分组之间的分割符 'APP_GROUP_LIST' = > '' , // 项目分组设定,多个组之间用逗号分隔,例如'Home,Admin' 'APP_AUTOLOAD_REG' = > false, // 是否开启SPL_AUTOLOAD_REGISTER 'APP_AUTOLOAD_PATH' = > 'Think.Util.' , // __autoLoad 机制额外检测路径设置,注意搜索顺序 'APP_CONFIG_LIST' = > array ( 'taglibs' , 'routes' , 'tags' , 'htmls' , 'modules' , 'actions' ), // 项目额外需要加载的配置列表,默认包括:taglibs(标签库定义),routes(路由定义),tags(标签定义),(htmls)静态缓存定义, modules(扩展模块),actions(扩展操作) )2. 然后通过 $config = require("config.php"); 就可以获取配置数组,就那么简单!
关于require,顾名思义,就是用来包含文件的,相应的还有include,以及两个带once的,通常情况下,包含成功返回1,包含失败返回false,但是,如果被包含文件中用return返回,那么这个值就是return的值.
查看更多关于ThinkPHP 的 C 函数实现原理 - Thinkphp的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did6264