問題:ThinkPHP的C函數用于獲取配置參數,我想知道它是如何獲取配置文件里的參數的?
- function C($name=null,$value=null)
- {
- static $_config = array();
- // 無參數時獲取所有
- if(emptyempty($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的值.
新聞熱點
疑難解答
圖片精選