thinkphp源码讲解——配置管理C函数
生活随笔
收集整理的這篇文章主要介紹了
thinkphp源码讲解——配置管理C函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這一篇文章,我們主要對thinkphp中的C函數進行一下分析拆解,C函數我個人感覺真的是個非常方便的函數,而且非常的實用,我們看看源碼和我自己添加的注釋吧:
function C($name=null, $value=null) {static $_config = array();//定義一個靜態變量,主要作用是存儲所有的配置項便于存取// 無參數時獲取所有if (empty($name)) return $_config;//看圖1// 優先執行設置獲取或賦值if (is_string($name)) {//如果$name是一個字符串如 $name='key' 或者 $name='key1.key2';if (!strpos($name, '.')) {//如果字符串中不存在'.',就想上一行的第一種形式,$name = strtolower($name);//小寫化if (is_null($value)){//如果沒有設定$value的值return isset($_config[$name]) ? $_config[$name] : null;//這里就體現出靜態變量的NB之處,如果已經存在配置項則返回配置項 }//這里的括號是我自己加的 方便大家閱讀$_config[$name] = $value;//如果靜態變量中沒有設定,就將配置項寫入靜態變量。return;}// 二維數組設置和獲取支持$name = explode('.', $name);//針對第二種形式$name='key1.key2';這個時候$name為一個小數組$name[0] = strtolower($name[0]);//小寫第一個參數if (is_null($value)){return isset($_config[$name[0]][$name[1]]) ? $_config[$name[0]][$name[1]] : null;//同理,如果靜態變量$_config配置項中存在$_config['key1']['key2']則返回配置值。 }//括號仍然是我自己加的$_config[$name[0]][$name[1]] = $value;//如果沒有則寫入靜態變量$_config中return;}// 批量設置if (is_array($name)){//如果是一個數組,則將現有的靜態變量$_config的值和新的這個$name的值合并起來。其實最開始的時候是先將配置文件讀到靜態變量$_config中的這點很重要return $_config = array_merge($_config, array_change_key_case($name));}return null; // 避免非法參數 } 當你在腳本中直接調用C();返回的內容如圖1
在這里我想說一點的地方就是第27行,最開始的時候是先將我們的基礎配置文件convention.php寫進了靜態變量$_config中的,所以后期我們可以很方便的讀取基礎配置,像這樣的語句,就可以很方便的調取到我們的配置項目,
$db = $this->dbName?$this->dbName:C('DB_NAME');其實我還想提到一點就是,它這樣的邏輯也確實是很精巧,函數用的最多的就是讀取配置,所以它將讀取的功能寫到最前邊,用的少的功能寫到后邊,在這里我不理解的地方就是為什么將
if (empty($name)) return $_config;//看圖1 這段代碼寫到第一個判斷中,這個應用的比較少的~~當然我們菜鳥不好揣測大神的意思,也希望哪位大神看到之后能指點 一下總結
以上是生活随笔為你收集整理的thinkphp源码讲解——配置管理C函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RAR 密码破解
- 下一篇: 课程linux实验报告,Linux课程综