FleaPHP 開發指南 - 5. 應用程式設定

來源:互聯網
上載者:User
程式|開發指南

FleaPHP 是一個具有高度靈活性的架構。開發人員可以用不同的設定來調整 FleaPHP 的工作方式。這些設定統一儲存在名為“應用程式設定”的資料來源中。

實際上,除了 FleaPHP 架構本身,應用程式也可以使用“應用程式設定”來儲存應用程式運行時需要的各種設定。

FleaPHP 的應用程式設定有一個預設設定檔,儲存在 FLEA/Config/Default_APP_INF.php 中。應用程式可以在入口檔案(例如 index.php)中修改這些設定,以便調整 FleaPHP 的工作方式。


如何使用應用程式設定?

當 FleaPHP 架構初始化時,預設的應用程式設定檔案(Default_APP_INF.php)會被載入。如果應用程式要指定設定,推薦的做法有下列幾種:

建立應用程式的私人設定檔案

當需要指定多個應用程式設定時,推薦使用該方法。具體的做法非常簡單,只需要定義類似如下的檔案即可(假設下面的內容儲存到檔案 APP/Config/MY_APP_INF.php)。

<?phpreturn array(    'defaultController' => 'UserCenter',    'urlLowerChar'      => false,    'dispatcher'        => 'FLEA_Dispatcher_Auth',    'dbDSN'     => array(        'driver'        => 'mysql',        'host'          => 'localhost',        'login'         => 'root',        'password'      =>Null 字元串,        'database'      => 'test',    ),);?>

然後在應用程式的入口檔案 index.php 中調用 run() 函數的代碼前,增加一行 register_app_inf('APP/Config/MY_APP_INF.php') 即可。例如:

<?phprequire('FLEA/FLEA.php');register_app_inf('APP/Config/MY_APP_INF.php');run();?>

直接在入口檔案中指定設定

對於少量的設定,可以在入口檔案中直接用 set_app_inf() 函數指定。例如:

<?phprequire('FLEA/FLEA.php');set_app_inf('defaultController', 'UserCenter');run();?>

不管採用哪一種方式,重要的都是必須在 run() 之前就指定好應用程式設定。


預設的應用程式設定

預設的應用程式設定提供了符合常見應用程式運行需要的設定。下面分類列出這些設定的名字和詳細說明。

核心配置

  • namespace 應用程式的預設名字空間,預設值為空白字串

    這個設定會影響到應用程式所有類的名稱定義。例如 namespace 設定為 FOO 時,應用程式所有控制器、模型的類名字都要加上首碼 FOO_。變成諸如 FOO_Controller_DefaultFOO_Model_News 等。

    為了讓你的代碼能夠更容易的在其他應用程式中複用,最好將 namespace 設定為空白字串。

  • controllerAccessor 指示控制器的 URL 參數名,預設值為 controller

    這個設定指定在 URL 查詢參數中,用什麼名字的參數指定控制器名字。例如 controllerAccessor 設定為 “ctl” 時,就必須用 index.php?ctl=MyController 來指定要調用的控制器。

  • defaultController 指示預設控制器的名字,預設值為 Default

    url 參數中沒有指定要調用的控制器時,將依據 defaultController 的設定調用預設的控制器。

  • actionAccessordefaultAction,預設值分別為 actionindex

    這兩個設定的作用和 controllerAccessordefaultController 類似。只不過用於指定控制器動作的參數名和預設動作名。

  • urlMode 指定 URL 分析和構造模式,預設值為 URL_STANDARD

    URL 的分析和構造模式,目前支援三種,分別是:URL_STANDARDURL_PATHINFOURL_REWRITE

    URL_STANDARD 模式中,URL 參數採用採用標準的方式,例如 index.php?controller=MyController&action=MyAction&class_id=2&sort=1

    關於 URL_PATHINFOURL_REWRITE 的詳細說明,請參考使用 PATHINFO 和 URL 重寫。

  • urlLowerChar 指示是否將 url 參數中包含的控制器名字和動作名字強制轉為小寫字元,預設值為 false

    對於 Windows 系統來說,這個設定無關緊要。而對於 Linux/Unix 系統來說,這個設定會關係到控制器類定義檔案的命名。

    urlLowerChartrue 時,控制器名字會被轉為小寫字元,而該控制器的類名字除第一個字母為大寫外,其他全為小寫。例如控制器名為 MyController,實際的控制器類名稱為 Mycontroller,對應的類定義檔案為 Mycontroller.php

    urlLowerCharfalse 時,控制器名字和控制器的類名字完全對應,例如控制器名為 QuickBenchmark,實際的控制器類名稱為 QuickBenchmark,對應的類定義檔案為 QuickBenchmark.php

  • controllerClassPrefix 指示控制器類名稱首碼,預設值為 Controller_
  • actionMethodPrefixactionMethodSuffix 指示控制器動作的方法名要加上的首碼和尾碼,預設值分別為 action 和Null 字元串

    使用首碼和尾碼可以,讓控制器動作方法的名稱和控制器中的其他方法區別開來。同時也可以避免無意中造成控制器內的私人方法被瀏覽器訪問到。

  • dispatcher 指示應用程式要使用的 URL 調度器,預設值為 FLEA_Dispatcher_Simple

    URL 調度器分析 URL 參數,決定要調用的控制器和控制器動作方法,最後調用控制器動作方法。預設的 FLEA_Dispatcher_Simple 是一個簡單的調度器,僅僅是分析 URL 參數,然後完成調用工作。而更複雜的 FLEA_Dispatcher_Auth 則可以結合 FleaPHP 內建的 RBAC(角色型存取控制)組件完成存取控制功能。

    如果開發人員自己編寫了調度器,那麼修改這個設定即可讓應用程式使用開發人員自己編寫的調度器。

  • dispatcherFailedCallback 指示調度器調度失敗後,要調用的處理常式,預設值為 null

    如果希望應用程式處理調度失敗的情況(例如控制器或控制器方法不存在),則需要覆蓋這個設定。

<?phpset_app_inf('dispatcherFailedCallback', 'appDispatcherFailedHandler');?>
  • internalCacheDir 指示 FleaPHP 內部及 cache 系列函數使用的緩衝目錄,預設值為 FLEA/_Cache/ 目錄
  • autoLoad 指示要自動載入的檔案,預設載入 FLEA_Helper_Array.phpFLEA_Helper_Html.phpFLEA_Controller_Action.php 三個檔案

    這個設定必須是一個數組,數組中每一個項目為要自動載入的檔案。

  • sessionProvider 指示要使用的 session 服務提供者,預設值為 null

    如果設定為 null,則表示使用 PHP 內建的 session 服務。

  • autoSessionStart 指示是否自動起用 session 支援,預設值為 true

    如果該設定為 true,則每次 FleaPHP 架構初始化後都會自動執行 session_start() 函數。

  • requestFilters 指示使用哪些過濾器對 HTTP 要求進行過濾,預設值為空白數組

    autoLoad 設定類似,該設定必須為數組。但數組中每一個項目為要啟動並執行過濾器類名字。過濾器按照出現在數組中的順序初始化和運行。

    每一個過濾器實際上都是一個指令碼,無需要實現為一個類。可以參考 FLEA/Filter/ 目錄中的過濾器代碼實現自己的過濾器。

    FleaPHP 初始化時,會根據 PHP 運行環境設定和應用程式設定來決定是否自動運行 FLEA_Filter_MagicQuotesFLEA_Filter_Uri 過濾器。因此開發人員不應該在 requestFilters 設定中調用這兩個過濾器

資料庫相關

  • dbDSN 資料庫連接設定,必須是數組,預設值為 null

    dbDSN 是 FleaPHP 應用程式預設的資料庫連接設定。正確指定該設定後,FleaPHP 會在應用程式需要訪問資料庫時嘗試自動連接資料庫。

    dbDSN 數組中每個選項的含義如下:

    • driver 資料庫驅動類型,例如 mysqlpgsql 等;
    • host 資料庫所在伺服器,通常為 localhost127.0.0.1
    • port 串連資料庫的連接埠,通常無需指定
    • login 串連時使用的使用者名稱
    • password 串連時使用的密碼
    • database 串連後要使用的資料庫名
    • charset 字元集設定,如果沒有設定該選項,則以應用程式設定 databaseCharset 為準
    • options 附加的串連選項

    典型的 dbDSN 設定如下:

<?phpset_app_inf('dbDSN',    array(        'driver'    => 'mysql',        'host'      => 'localhost',        'login'     => 'username',        'password'  => 'password',        'database'  => 'test_db',    ));?>
  • dbTDGAutoInit 指示構造表資料入口對象時,是否自動連接到資料庫,預設值為 true

    如果你希望自己控制資料庫連接,那麼可以將該設定指定為 false

  • dbTablePrefix 指示資料表的全域首碼,預設為空白字串,該設定會影響到所有資料表
  • dbValidationProvider 指示表資料入口要使用的資料驗證服務物件,預設值為 FLEA_Helper_Validation

視圖和模版相關

  • view 指示要使用的模板引擎,PHP 表示使用 PHP 語言本身作模板引擎,預設值為 PHP

    目前 FleaPHP 提供了 FLEA_View_Simple 模版引擎和 FLEA_View_Smarty 模版引擎。其中 FLEA_View_Smarty 實際上是一個連接器,用於串連 Smarty 模版引擎。

  • viewConfig 指定模板引擎要使用的配置資訊,預設為 null

    不同模版引擎可能需要不同的配置,可以用 viewConfig 設定來指定。

I18N

有關 FleaPHP 對 I18N 支援的詳細資料,請參考開發指南的相關章節。

  • responseCharset 指示 FleaPHP 輸出內容的使用的編碼,預設值為 gb2312

    FleaPHP 核心本身並不假定要處理的內容採用什麼編碼,也不會自動將輸入內容轉換為輸出內容指定的編碼。responseCharset 設定僅僅是用來作為一個參考,特別是 autoResponseHeader 設定為 true 時,FleaPHP 會自動送出 Content-Type: text/html; charset=xxxxx 的 HTTP 頭資訊。

  • databaseCharset 指示當 FleaPHP 串連資料庫時,要指定的編碼,預設值為 gb2312

    許多較為進階的資料庫,例如 PostgreSQL、MySQL 4.1/5.x、Oracle 等,都允許在資料庫中儲存不同編碼的資料。因此開發人員要正確設定 databaseCharset 設定,以便 FleaPHP 在串連資料庫時能夠正確設定編碼,避免亂碼問題。

    對於較老的資料庫,例如 MySQL 3.x/4.0,這個設定沒有意義。

  • autoResponseHeader 指示是否自動輸出 Content-Type: text/html; charset=xxxxx 的 HTTP 頭資訊,預設值為 true

    當該設定為 true 時,FleaPHP 會在初始化時自動輸出一個 HTTP 頭資訊,以指定應用程式輸出內容的編碼。具體指定什麼編碼,由 responseCharset 設定決定。

    對於大部分伺服器,啟用該設定可以避免出現瀏覽器無法正確識別輸出內容編碼的問題。但在某些伺服器環境中,啟用該設定會導致出現無法輸出生動影像等問題。

  • charsetConstant 指示是否自動定義 RESPONSE_CHARSETDATABASE_CHARSET 等常量,預設值為 true

    當該設定為 true 時,FleaPHP 會在初始化時根據 responseCharsetdatabaseCharset 設定分別定義 RESPONSE_CHARSETDATABASE_CHARSET 常量。應用程式可以用這兩個常量簡化一些開發。

  • multiLangaugeSupport 指示是否啟用多語言支援,預設值為 false

    當該設定為 true 時,會自動載入由 languageSupportProvider 指定的多語言支援服務提供者。

  • languageSupportProvider 指定提供多語言支援的提供者,預設值為 FLEA_Com_Language

    FLEA_Com_Language 是 FleaPHP 內建的多語言支援服務提供者。

  • languageFilesDir 指示語言檔案的儲存位置,預設值為 null

    當使用多語言支援時,必須修改該設定,指向一個儲存所有語言檔案的目錄。

    語言檔案按照“語言/字典名.php”的目錄結構儲存,例如 languageFilesDir 設定為 /var/www/test/languages,則語言檔案的實際檔案名稱就可能是:/var/www/test/languages/chinese-gb2312/user_interface.php

  • defaultLanguage 指示預設語言,預設值為 chinese-gb2312

    當載入語言檔案時如果沒有指定語言參數,則會從 defaultLanguage 指定的語言目錄下載入字典檔案。

  • autoLoadLanguage 指示要自動載入的語言字典,預設值為 null

    autoLoadLanguage 可以是數組,其中每一項是一個要載入的字典名。或者是一個用“,”分隔多個字典名的字串。

FLEA_Dispatcher_Auth 和 RBAC 組件

  • dispatcherAuthProvider 指示調度器要使用的驗證服務提供者,預設值為 FLEA_Com_RBAC

    FLEA_Com_RBAC 提供了 check() 方法,讓調度器通過調用該方法來檢查當前發起請求的使用者是否有許可權訪問指定的控制器和控制器動作方法。如果開發人員要編寫自己的驗證服務提供者,就必須實現 check() 方法。如果使用開發人員自己編寫的調度器,也可以通過該設定來指定驗證服務提供者。

    check() 方法的原型是:function check($roles, $ACT)

  • defaultControllerACTFile 指示 RBAC 組件要使用的預設 ACT 檔案,預設值為空白字串

    通過該設定,可以為多個控制器指定 ACT(存取控制表),而不需要為每一個控制器都提供一個 .act.php 檔案。注意,該設定指定的檔案必須是完整路徑,或者相對於應用程式入口(index.php)的相對路徑。

  • autoQueryDefaultACTFile 指示 RBAC 組件是否在沒有找到控制器的 ACT 檔案時,是否從預設 ACT 檔案中查詢控制器的 ACT,預設值為 false
  • controllerACTLoadWarning 指示沒有找到控制器的 ACT 時,是否顯示警告資訊,預設值為 true
  • defaultControllerACT 指示當沒有為控制器提供 ACT 時,要使用的預設 ACT,預設值為 null
  • dispatcherAuthFailedCallback 指示使用者沒有許可權存取控制器或控制器方法時,要調用的處理常式,預設值為 null
  • RBACSessionKey 指示 RBAC 組件用什麼鍵名在 session 中儲存使用者資料,預設值為 RBAC_USERDATA

    如果在一個網域名稱下同時運行多個應用程式,請務必為每一個應用程式使用自己獨一無二的鍵名。

Log Service和錯誤處理

  • logEnabled 指示是否啟用Log Service,預設值為 false

    如果該設定為 true,則會自動載入由 logProvider 設定指定的Log Service提供者。

  • logProvider 指示Log Service的程式,預設值為 FLEA_Com_Log
  • logFileDir 指示用什麼目錄儲存記錄檔,預設值為 null

    最好將日誌儲存在瀏覽器無法訪問的目錄中。

  • logFilename 指示用什麼檔案名稱儲存日誌,預設值為 access.log
  • logFileMaxSize 指示當記錄檔超過多少 KB 時,自動建立新的記錄檔,單位是 KB,不能小於 512KB,預設值為 4096
  • logErrorLevel 指示哪些層級的錯誤要儲存到日誌中,預設值為 ‚warning, error, exception‘
  • displayErrors 指示是否顯示錯誤資訊,預設值為 true
  • friendlyErrorsMessage 指示是否顯示友好的錯誤資訊,預設值為 true
 


相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。