thinkphp學習筆記4—眼花繚亂的配置

 

1.配置類別php

ThinkPHP提供了靈活的全局配置功能,ThinkPHP會依次加載管理配置>項目配置>調試配置>分組配置>擴展配置>動態配置,因此後面的配置權限要大於前面的,由於後面的配置會覆蓋前面同名配置,同事會生辰配置緩存文件無需重複解析,減少開銷。html

  • 慣例配置:在慣例配置內對大多數經常使用參數進行默認配置,由於慣例配置最早加載,優先級別最低,若是不須要作特殊配置的話,徹底能夠保持默認值,慣例配置位於ThinkPHP/Conf/convention.php,內容摘抄以下:
    <?php
    /**
     * ThinkPHP慣例配置文件
     * 該文件請不要修改,若是要覆蓋慣例配置的值,可在應用配置文件中設定和慣例不符的配置項
     * 配置名稱大小寫任意,系統會統一轉換成小寫
     * 全部配置參數均可以在生效前動態改變
     */
    defined('THINK_PATH') or exit();
    return  array(
        /* 應用設定 */
        'APP_USE_NAMESPACE'     =>  true,    // 應用類庫是否使用命名空間
        'APP_SUB_DOMAIN_DEPLOY' =>  false,   // 是否開啓子域名部署
        'APP_SUB_DOMAIN_RULES'  =>  array(), // 子域名部署規則
        'APP_DOMAIN_SUFFIX'     =>  '', // 域名後綴 若是是com.cn net.cn 之類的後綴必須設置    
        'ACTION_SUFFIX'         =>  '', // 操做方法後綴
        'MULTI_MODULE'          =>  true, // 是否容許多模塊 若是爲false 則必須設置 DEFAULT_MODULE
        'MODULE_DENY_LIST'      =>  array('Common','Runtime'),
        'CONTROLLER_LEVEL'      =>  1,
        'APP_AUTOLOAD_LAYER'    =>  'Controller,Model', // 自動加載的應用類庫層 關閉APP_USE_NAMESPACE後有效
        'APP_AUTOLOAD_PATH'     =>  '', // 自動加載的路徑 關閉APP_USE_NAMESPACE後有效
    
        /* Cookie設置 */
        'COOKIE_EXPIRE'         =>  0,    // Cookie有效期
        'COOKIE_DOMAIN'         =>  '',      // Cookie有效域名
        'COOKIE_PATH'           =>  '/',     // Cookie路徑
        'COOKIE_PREFIX'         =>  '',      // Cookie前綴 避免衝突
    
        /* 默認設定 */
        'DEFAULT_M_LAYER'       =>  'Model', // 默認的模型層名稱
        'DEFAULT_C_LAYER'       =>  'Controller', // 默認的控制器層名稱
        'DEFAULT_V_LAYER'       =>  'View', // 默認的視圖層名稱
        'DEFAULT_LANG'          =>  'zh-cn', // 默認語言
        'DEFAULT_THEME'         =>  '',    // 默認模板主題名稱
        'DEFAULT_MODULE'        =>  'Home',  // 默認模塊
        'DEFAULT_CONTROLLER'    =>  'Index', // 默認控制器名稱
        'DEFAULT_ACTION'        =>  'index', // 默認操做名稱
        'DEFAULT_CHARSET'       =>  'utf-8', // 默認輸出編碼
        'DEFAULT_TIMEZONE'      =>  'PRC',    // 默認時區
        'DEFAULT_AJAX_RETURN'   =>  'JSON',  // 默認AJAX 數據返回格式,可選JSON XML ...
        'DEFAULT_JSONP_HANDLER' =>  'jsonpReturn', // 默認JSONP格式返回的處理方法
        'DEFAULT_FILTER'        =>  'htmlspecialchars', // 默認參數過濾方法 用於I函數...
    
        /* 數據庫設置 */
        'DB_TYPE'               =>  '',     // 數據庫類型
        'DB_HOST'               =>  '', // 服務器地址
        'DB_NAME'               =>  '',          // 數據庫名
        'DB_USER'               =>  '',      // 用戶名
        'DB_PWD'                =>  '',          // 密碼
        'DB_PORT'               =>  '',        // 端口
        'DB_PREFIX'             =>  '',    // 數據庫表前綴
        'DB_FIELDTYPE_CHECK'    =>  false,       // 是否進行字段類型檢查
        'DB_FIELDS_CACHE'       =>  true,        // 啓用字段緩存
        'DB_CHARSET'            =>  'utf8',      // 數據庫編碼默認採用utf8
        'DB_DEPLOY_TYPE'        =>  0, // 數據庫部署方式:0 集中式(單一服務器),1 分佈式(主從服務器)
        'DB_RW_SEPARATE'        =>  false,       // 數據庫讀寫是否分離 主從式有效
        'DB_MASTER_NUM'         =>  1, // 讀寫分離後 主服務器數量
        'DB_SLAVE_NO'           =>  '', // 指定從服務器序號
        'DB_SQL_BUILD_CACHE'    =>  false, // 數據庫查詢的SQL建立緩存
        'DB_SQL_BUILD_QUEUE'    =>  'file',   // SQL緩存隊列的緩存方式 支持 file xcache和apc
        'DB_SQL_BUILD_LENGTH'   =>  20, // SQL緩存的隊列長度
        'DB_SQL_LOG'            =>  false, // SQL執行日誌記錄
        'DB_BIND_PARAM'         =>  false, // 數據庫寫入數據自動參數綁定
    
        /* 數據緩存設置 */
        'DATA_CACHE_TIME'       =>  0,      // 數據緩存有效期 0表示永久緩存
        'DATA_CACHE_COMPRESS'   =>  false,   // 數據緩存是否壓縮緩存
        'DATA_CACHE_CHECK'      =>  false,   // 數據緩存是否校驗緩存
        'DATA_CACHE_PREFIX'     =>  '',     // 緩存前綴
        'DATA_CACHE_TYPE'       =>  'File',  // 數據緩存類型,支持:File|Db|Apc|Memcache|Shmop|Sqlite|Xcache|Apachenote|Eaccelerator
        'DATA_CACHE_PATH'       =>  TEMP_PATH,// 緩存路徑設置 (僅對File方式緩存有效)
        'DATA_CACHE_SUBDIR'     =>  false,    // 使用子目錄緩存 (自動根據緩存標識的哈希建立子目錄)
        'DATA_PATH_LEVEL'       =>  1,        // 子目錄緩存級別
    
        /* 錯誤設置 */
        'ERROR_MESSAGE'         =>  '頁面錯誤!請稍後再試~',//錯誤顯示信息,非調試模式有效
        'ERROR_PAGE'            =>  '',    // 錯誤定向頁面
        'SHOW_ERROR_MSG'        =>  false,    // 顯示錯誤信息
        'TRACE_MAX_RECORD'      =>  100,    // 每一個級別的錯誤信息 最大記錄數
    
        /* 日誌設置 */
        'LOG_RECORD'            =>  false,   // 默認不記錄日誌
        'LOG_TYPE'              =>  'File', // 日誌記錄類型 默認爲文件方式
        'LOG_LEVEL'             =>  'EMERG,ALERT,CRIT,ERR',// 容許記錄的日誌級別
        'LOG_FILE_SIZE'         =>  2097152,    // 日誌文件大小限制
        'LOG_EXCEPTION_RECORD'  =>  false,    // 是否記錄異常信息日誌
    
        /* SESSION設置 */
        'SESSION_AUTO_START'    =>  true,    // 是否自動開啓Session
        'SESSION_OPTIONS'       =>  array(), // session 配置數組 支持type name id path expire domain 等參數
        'SESSION_TYPE'          =>  '', // session hander類型 默認無需設置 除非擴展了session hander驅動
        'SESSION_PREFIX'        =>  '', // session 前綴
        //'VAR_SESSION_ID'      =>  'session_id',     //sessionID的提交變量
    
        /* 模板引擎設置 */
        'TMPL_CONTENT_TYPE'     =>  'text/html', // 默認模板輸出類型
        'TMPL_ACTION_ERROR'     =>  THINK_PATH.'Tpl/dispatch_jump.tpl', // 默認錯誤跳轉對應的模板文件
        'TMPL_ACTION_SUCCESS'   =>  THINK_PATH.'Tpl/dispatch_jump.tpl', // 默認成功跳轉對應的模板文件
        'TMPL_EXCEPTION_FILE'   =>  THINK_PATH.'Tpl/think_exception.tpl',// 異常頁面的模板文件
        'TMPL_DETECT_THEME'     =>  false,       // 自動偵測模板主題
        'TMPL_TEMPLATE_SUFFIX'  =>  '.html',     // 默認模板文件後綴
        'TMPL_FILE_DEPR'        =>  '/', //模板文件CONTROLLER_NAME與ACTION_NAME之間的分割符
        // 佈局設置
        'TMPL_ENGINE_TYPE'      =>  'Think',     // 默認模板引擎 如下設置僅對使用Think模板引擎有效
        'TMPL_CACHFILE_SUFFIX'  =>  '.php',      // 默認模板緩存後綴
        'TMPL_DENY_FUNC_LIST'   =>  'echo,exit',    // 模板引擎禁用函數
        'TMPL_DENY_PHP'         =>  false, // 默認模板引擎是否禁用PHP原生代碼
        'TMPL_L_DELIM'          =>  '{',            // 模板引擎普通標籤開始標記
        'TMPL_R_DELIM'          =>  '}',            // 模板引擎普通標籤結束標記
        'TMPL_VAR_IDENTIFY'     =>  'array',     // 模板變量識別。留空自動判斷,參數爲'obj'則表示對象
        'TMPL_STRIP_SPACE'      =>  true,       // 是否去除模板文件裏面的html空格與換行
        'TMPL_CACHE_ON'         =>  true,        // 是否開啓模板編譯緩存,設爲false則每次都會從新編譯
        'TMPL_CACHE_PREFIX'     =>  '',         // 模板緩存前綴標識,能夠動態改變
        'TMPL_CACHE_TIME'       =>  0,         // 模板緩存有效期 0 爲永久,(以數字爲值,單位:秒)
        'TMPL_LAYOUT_ITEM'      =>  '{__CONTENT__}', // 佈局模板的內容替換標識
        'LAYOUT_ON'             =>  false, // 是否啓用佈局
        'LAYOUT_NAME'           =>  'layout', // 當前佈局名稱 默認爲layout
    
        // Think模板引擎標籤庫相關設定
        'TAGLIB_BEGIN'          =>  '<',  // 標籤庫標籤開始標記
        'TAGLIB_END'            =>  '>',  // 標籤庫標籤結束標記
        'TAGLIB_LOAD'           =>  true, // 是否使用內置標籤庫以外的其它標籤庫,默認自動檢測
        'TAGLIB_BUILD_IN'       =>  'cx', // 內置標籤庫名稱(標籤使用沒必要指定標籤庫名稱),以逗號分隔 注意解析順序
        'TAGLIB_PRE_LOAD'       =>  '',   // 須要額外加載的標籤庫(須指定標籤庫名稱),多個以逗號分隔 
        
        /* URL設置 */
        'URL_CASE_INSENSITIVE'  =>  true,   // 默認false 表示URL區分大小寫 true則表示不區分大小寫
        'URL_MODEL'             =>  1,       // URL訪問模式,可選參數0、一、二、3,表明如下四種模式:
        // 0 (普通模式); 1 (PATHINFO 模式); 2 (REWRITE  模式); 3 (兼容模式)  默認爲PATHINFO 模式
        'URL_PATHINFO_DEPR'     =>  '/',    // PATHINFO模式下,各參數之間的分割符號
        'URL_PATHINFO_FETCH'    =>  'ORIG_PATH_INFO,REDIRECT_PATH_INFO,REDIRECT_URL', // 用於兼容判斷PATH_INFO 參數的SERVER替代變量列表
        'URL_REQUEST_URI'       =>  'REQUEST_URI', // 獲取當前頁面地址的系統變量 默認爲REQUEST_URI
        'URL_HTML_SUFFIX'       =>  'html',  // URL僞靜態後綴設置
        'URL_DENY_SUFFIX'       =>  'ico|png|gif|jpg', // URL禁止訪問的後綴設置
        'URL_PARAMS_BIND'       =>  true, // URL變量綁定到Action方法參數
        'URL_PARAMS_BIND_TYPE'  =>  0, // URL變量綁定的類型 0 按變量名綁定 1 按變量順序綁定
        'URL_404_REDIRECT'      =>  '', // 404 跳轉頁面 部署模式有效
        'URL_ROUTER_ON'         =>  false,   // 是否開啓URL路由
        'URL_ROUTE_RULES'       =>  array(), // 默認路由規則 針對模塊
        'URL_MAP_RULES'         =>  array(), // URL映射定義規則
    
        /* 系統變量名稱設置 */
        'VAR_MODULE'            =>  'm',     // 默認模塊獲取變量
        'VAR_CONTROLLER'        =>  'c',    // 默認控制器獲取變量
        'VAR_ACTION'            =>  'a',    // 默認操做獲取變量
        'VAR_AJAX_SUBMIT'       =>  'ajax',  // 默認的AJAX提交變量
        'VAR_JSONP_HANDLER'     =>  'callback',
        'VAR_PATHINFO'          =>  's',    // 兼容模式PATHINFO獲取變量例如 ?s=/module/action/id/1 後面的參數取決於URL_PATHINFO_DEPR
        'VAR_TEMPLATE'          =>  't',    // 默認模板切換變量
    
        'HTTP_CACHE_CONTROL'    =>  'private',  // 網頁緩存控制
        'CHECK_APP_DIR'         =>  true,       // 是否檢查應用目錄是否建立
        'FILE_UPLOAD_TYPE'      =>  'Local',    // 文件上傳方式
        'DATA_CRYPT_TYPE'       =>  'Think',    // 數據加密方式
    
    );

  • 應用配置:調用全部模塊以前加載的公共配置文件,位於Application/Common/Conf/config.php,注意若是修改公共模塊的名稱,公共配置文件的位置也要相應改變,應用配置裏沒有什麼內容,須要本身添加,以下:
    <?php
    return array(
        //'配置項'=>'配置值'
    );
  • 模式配置:若是使用普通應用模式以外的應用模式,能夠爲應用模式單獨添加配置文件,文件存放的位置和命名規則以下:Application/Common/Conf/config_應用模式名稱.php,注意模式配置僅僅在運行模式下才會加載
  • 調試配置:若是開啓調試模式的話,則會自動加載框架的調試配置文件和應用調試配置文件,他們的位置分別位於ThinkPHP/Conf/debug.php,Application/Common/Conf/debug.php
  • 狀態配置:每一個應用能夠在不一樣的狀況下設置本身的狀態,也可稱之爲應用場景,若是咱們要區分開發環境和測試環境,在入口文件中定義define('APP_STATUS','development');那麼會加載對應的配置文件Application/Common/Conf/development.php,若是在入口文件中修改成define('APP_STATUS','test');那麼會加載對應的配置文件Application/Common/Conf/test.php
  • 模塊配置:每一個模塊會加載本身的配置文件,和模塊放在相同目錄下,例如:Application/當前模塊名/Conf/config.php,若是使用了普通模式以外的其餘應用模式,還能夠爲應用模式單獨定義配置文件,名稱和存放目錄如:Application/當前模塊名/Conf/config_應用模式名稱.php,注意這個僅在運行模式下才會加載,模塊配置文件是可選的。

    若是應用的配置文件比較大,想分紅幾個單獨的配置文件或者加載額外的配置文件可使用擴展配置和動態配置。

2.讀取配置ajax

ThinkPHP使用C方法來讀取配置節點,就是Config的意思,注意配置項的參數不區分大小寫,C('URL_MODEL')和C('url_model')獲得的結果是同樣的,可是仍是建議區分大小寫。配置參數名字不能使用「.」,由於這個是用來讀取二維參數的,若是沒有配置則返回NULL。讀取二維參數值的方法以下:C('USER_CONFIG.USER_TYPE');
數據庫

3.動態配置json

能夠預先寫好配置參數,也能夠在方法中動態設置,也是使用C方法,例如:C('參數名稱','新的參數值');動態配置僅僅對當前請求有效,對其餘的請求無效。注意到動態配置的方法和讀取配置的方法是同樣的,只不過多了一個參數而已。數組

4.擴展配置緩存

擴展配置能夠自動加載額外的自定義配置文件,配置格式和項目配置的格式同樣,設置擴展配置的方式以下:
服務器

// 加載擴展配置文件
'LOAD_EXT_CONFIG' => 'user,db',session

相關文章
相關標籤/搜索