<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                #### 系統配置類 在整個網站的運行過程中,經常需要用到系統配置文件,比如說數據庫配置,需要經常進行讀取,所以,寫一個系統配置類是必要的,在這個配置類中,我們可以動態操作配置文件,設計的時候,模仿TP的C函數,首先在公共函數中定義一個C函數, ``function C(){ $conf = \S\Config::getInstance(); //獲取配置類的單例 $args = func_get_args(); //獲取函數中傳進來的參數 switch (func_num_args()) { //獲取傳進來的參數的個數 case 0: //0個參數,讀取全部配置 return $conf->get(); //返回config對象的get方法結果 break; case 1: //一個參數,則為讀取配置信息的值,如果是數組,為動態設置配置信息的值 if (is_array($args[0])){ return $conf->setAll($args[0]); //返回config對象的setAll方法結果 } return $conf->get($args[0]); //如果不是數組,就是獲取該配置信息的值 break; case 2: //兩個參數,為設置配置信息的值 return $conf->set($args[0],$args[1]); break; default: break; } }`` 首先獲取配置類的單例,然后根據傳入參數的個數,調用不同這個類中不同的方法,是獲取還是設置信息。 ###### 在配置類中實現方法: ~~~ ~~~``<?php namespace S; class Config{ //這個數組是用來存放配置值的 private $config=[]; //這個變量用來存放單例的 private static $instance; public static function getInstance(){ //單例模式 if (!(self::$instance instanceof self)) { //判斷現在的$instance是否是自身類的一個實例 self::$instance = new self; //如果不是的話,證明這個類從來沒有實例化過,那么就實例化自己 } return self::$instance; //如果是的話,就返回這個$instance,這個類的實例,這樣就能保證在整個程序運行過程中都只有一個Config類的實例,可以節約資源,這就是單例模式 } /** * Config constructor. 構造函數 創建實例時就引入配置文件,并合并,給$config賦值 */ private function __construct(){ //在實例化這個類的時候 就會調用這個構造函數 $sys_conf = []; //系統配置數組 $user_conf = []; //用戶配置數組 //系統配置文件 if (file_exists(SYS_CONFIG)){ //如果S-Framework中定義過的系統配置文件路徑存在且有效的話,則把這個文件包含進來 $sys_conf = include(SYS_CONFIG); } //用戶配置文件 if (file_exists(USER_CONFIG)){ //如果S-Framework中定義過的用戶配置文件路徑存在且有效的話,則把這個文件包含進來 $user_conf = include(USER_CONFIG); } return $this->config = array_merge($sys_conf,$user_conf); //把用戶配置和系統配置合并在同一個數組里,使用戶配置覆蓋掉相同的系統配置,這樣就實現了用戶的自定義配置 } /** * @return array 獲取config文件中的數據 */ public function get($parm = null){ $value = []; if (isset($this->config) && empty($parm)){ //如果沒有參數傳進來的話,就返回整個config數組(config數組在構造函數中獲得過值) return $this->config; } if (isset($this->config[$parm])){ //如果有參數傳進來的話,就在config數組中尋找鍵值是這個參數的配置項,并將其返回 return $this->config[$parm]; }else{ echo 'config參數錯誤'; } } public function setAll($arr){ //批量設置配置項 if (is_array($arr)){ //如果傳進來的參數是一個數組的話 foreach ($arr as $key => $value) { //就遍歷這個數組,每遍歷一個鍵值對,就調用一次set方法,把鍵與值作為參數傳遞進去 $this->set($key,$value); //使得每一個鍵值對都成為一個配置項,然后返回true,證明執行成功 } return true; }else{ return false; //如果傳進來的參數不是數組,就返回false,證明執行失敗 } } public function set($keys,$values){ //設置配置數組的值 $this->config[$keys] = $values; //使傳進來的兩個參數的鍵與值對應 return true; } } `` 以上就是系統配置類,現在我們重新看開始的C()函數,首先獲取Config類的對象,然后根據需要調用不同的方法,達到設置與獲取配置項的目的。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看