1. *.ini
2. *.xml
3. *.php và *.inc (file này phải return một mảng, vì ZF dùng $config = include $file; để đọc mảng trong file này ra biến $config)
B. Các cấu hình load tự động:
Mình trình bày qua các ví dụ để các bạn dễ hình dung
- Mã: Chọn tất cả
config = APPLICATION_PATH "/modules/admin/configs/Mudule.ini"
Cái này giống như include vậy, tức là nó sẽ load và merge cái file Mudule.ini vào luôn.
Nếu bạn muốn load nhiều file thì cấu hình thành dạng mảng như sau:
- Mã: Chọn tất cả
config.ten1 = APPLICATION_PATH "/configs/Router.ini"
config.ten2 = APPLICATION_PATH "/configs/Db.ini"
- Mã: Chọn tất cả
phpSettings.date.timezone = "Asia/Saigon"
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
phpSettings.error_reporting = 8191
Dùng phpSettings khi bạn muốn Application tự set vài tham số có trong file php.ini (để nó sử dụng chứ không phải set trực tiếp vào file php.ini đâu nhé)
Ví dụ ở trên sẽ cấu hình:
- Mã: Chọn tất cả
date.timezone = "Asia/Saigon"
display_startup_errors = 0
display_errors = 0
error_reporting = 8191
Con số 8191 ở đâu ra? Bạn hãy xem danh sách hằng dùng cho error_reporting xem http://vn2.php.net/manual/en/errorfunc.constants.php .
8191 = 4096+2048+1024+512+256+128+64+32+16+8+4+2+1, có nghĩa là:
E_ERROR & E_WARNING & E_PARSE & E_NOTICE & E_CORE_ERROR & E_CORE_WARNING & E_COMPILE_ERROR & E_COMPILE_WARNING & E_USER_ERROR & E_USER_WARNING & E_USER_NOTICE & E_STRICT & E_RECOVERABLE_ERROR
(nguyên dãy từ trên xuống dưới
đến chổ E_RECOVERABLE_ERROR, nếu bạn chỉ muốn E_ERROR & E_NOTICE thì bạn để số 9)- Mã: Chọn tất cả
includepaths = LIBRARY_PATH
Thêm LIBRARY_PATH vào danh sách thư mục được php include, để Autoloader dựa vào đó mà tìm file cần include
- Mã: Chọn tất cả
autoloadernamespaces.ten1 = "Vmt1_"
autoloadernamespaces.ten2 = "Vmt2_"
Đăng ký các Namespace với Application, những cái này cần thiết cho Autoloader của Application khi bạn gọi một class ra sử dụng (có nghĩa là nếu bạn gọi Vmt1_Helper_Abc thì nhờ thằng Autoloader nó sẽ tự tìm file tương ứng chứa class đó để nó include vào, bạn không phải lo include file nào vào nữa cả)
- Mã: Chọn tất cả
autoloaderZfPath = "path/to/ZendFramework"
autoloaderZfVersion = "1.7.7"
Cái này báo cho thằng Autoloader biết chổ để load Zf trong trường hợp bạn có nhiều phiên bản Zf khác nhau, và chứa như thế này
path/to/ZendFramework/
|-- 10.1.2/
| |-- library/
|-- ZendFramework-1.9.1-minimal/
| |-- library/
|-- 1.9.2/
| |-- library/
|-- 1.8.4/
| |-- library/
|-- ZendFramework-1.8.3/
| |-- library/
|-- 1.7.8/
| |-- library/
|-- 1.7.7/
| |-- library/
|-- 1.7.6/
| |-- library/
Nếu bạn không cung cấp autoloaderZfVersion, nó sẽ nhận giá trị mật định là "latest", là phiên bản mới nhất hiện có trong thư mục
- Mã: Chọn tất cả
bootstrap = APPLICATION_PATH "/Bootstrap"
Thư mục chứa file Bootstrap.php, trong file phải có class có tên là Bootstrap nếu bạn muốn đổi tên class thành tên khác thì bạn phải cấu hình kiểu mảng như sau:
- Mã: Chọn tất cả
bootstrap.path = APPLICATION_PATH "/Bootstrap"
bootstrap.class = "TenKhac"
Nếu bạn không cung cấp tên class nó sẽ lấy giá trị mật định là Bootstrap
- Mã: Chọn tất cả
pluginPaths.Vmt_Application_Resource = LIBRARY_PATH "/Vmt/Application/Resource"
Đăng ký Vmt_Application_Resource với PluginLoader. Khác với Autoloader (chỉ tìm và include file), PluginLoader vừa tìm để include vừa khởi tạo Class của Plugin, và execute các method được khai báo sẳn (tùy vào lúc ứng dụng được thực thi đến đâu) các method này được xem như là các Event.
resources.<tên Resource>.<tên method của Resource>.<string|array options> = value
Đăng ký với PluginResource với Application, đồng thời khởi tạo các options của resource, các build-in PluginResource của ZF bao gồm: Cachemanager, Db, Dojo, Frontcontroller, Layout, Locale, Log, Mail, Modules, Multidb, Navigation, Router, Session, Translate, View
Phần này nó nhiều quá, cho phép mình giới thiệu sơ sài thế thôi nha
. Bạn nào muốn tìm hiểu rõ thì vào thư viện Zend, Zend/Application/Resource xem các file trong đó sẽ rõ cách cấu hình.Mình chỉ đưa một số để các bạn xem qua:
resources.frontController.controllerDirectory
resources.frontController.moduleControllerDirectoryname
resources.frontController.moduleDirectory
resources.frontController.defaultControllername
resources.frontController.defaultAction
resources.frontController.defaultModule
resources.frontController.baseUrl
resources.frontController.params
resources.frontController.plugins string className | array('class'=>className , 'stackIndex'=>stackIndex)
(resources.frontController.plugins.class
resources.frontController.plugins.stackIndex)
resources.frontController.returnResponse =true ;trả về trang trống
resources.frontController.returnResponse =false ;ứng dụng chạy bình thường
resources.frontController.throwExceptions = true ;báo lỗi bằng php
resources.frontController.throwExceptions = false ;báo lỗi bằng Application
resources.frontController.actionHelperPaths.prefix
resources.frontController.actionHelperPaths.path
====== Phần tiếp theo đây mình mới tìm hiểu thêm chiều nay, thời gian ko cho phép nên chưa kiểm nghiệm để biết cách sửa dụng cụ thể hoặc loại bỏ bớt cấu hình không cần thiết hoặc không phù hợp sử dụng trong Application.ini... các bạn có thể test giúp, hoặc đợi vài hôm nữa ^^ =======
resources.view.doctype = 'HTML4_LOOSE'
'XHTML11'
'XHTML1_STRICT'
'XHTML1_TRANSITIONAL'
'XHTML1_FRAMESET'
'XHTML_BASIC1'
'XHTML5'
'HTML4_STRICT'
'HTML4_LOOSE'
'HTML4_FRAMESET'
'HTML5'
'CUSTOM_XHTML'
'CUSTOM'
resources.view.useStreamWrapper = 0|1
resources.translate.data = APPLICATION_PATH "/languages"
resources.translate.adapter = "Array" 'Array'|'Csv'|'Gettext'|'Ini'|'Qt'|'Tbx'|'Tmx'|'Xliff'|'XmlTm' default='Array'
resources.translate.locale = "vi_VN" ;auto|;comment this line =>null|... see the list in Zend_Local
resources.translate.options.clear = 0
resources.translate.options.disableNotices = 0
resources.translate.options.ignore = '.' bo qua cac file co ky ty dau tien la '.'
resources.translate.options.locale = 'auto' chi co tac dung khi locale o tren = null | chua duoc set
resources.translate.options.log = null Zend_Log
resources.translate.options.logMessage = "Untranslated message within '%locale%': %message%"
resources.translate.options.logUntranslated = 0
resources.translate.options.reload = 0
resources.translate.options.scan = null 'directory'|'filename'
* 'clear' => when true, clears already loaded data when adding new files
* 'disableNotices' => when true, omits notices from being displayed
* 'ignore' => a prefix for files and directories which are not being added
* 'locale' => the actual set locale to use
* 'log' => a instance of Zend_Log where logs are written to
* 'logMessage' => message to be logged
* 'logUntranslated' => when true, untranslated messages are not logged
* 'reload' => reloads the cache by reading the content again
* 'scan' => searches for translation files using the LOCALE constants
;Csv
resources.translate.options.length = 0
resources.translate.options.delimiter = ';'
resources.translate.options.enclosure = '"'
;Xliff
resources.translate.options.useId = 0|1
resources.translate.registry_key default="Zend_Translate"
resources.router.chainNameSeparator
resources.router.useRequestParametersAsGlobal
resources.router.routes.<tên Route>.type = "Zend_Controller_Router_Route_Static"
"Zend_Controller_Router_Route_Static"
"Zend_Controller_Router_Route_Hostname"
"Zend_Controller_Router_Route_Regex"
"Zend_Controller_Router_Route_Module"
"Zend_Controller_Router_Route_Chain"
resources.router.routes.<tên Route>.route =
resources.router.routes.<tên Route>.defaults.<tên Param> =
resources.router.routes.<tên Route>.chains.type =
resources.router.routes.<tên Route>.chains.route =
resources.router.routes.<tên Route>.chains.defaults.<tên Param> =
;"Zend_Controller_Router_Route_Regex"
resources.router.routes.<tên Route>.map.1 = <tên Param>
resources.router.routes.<tên Route>.map.2 = <tên Param>
..
resources.router.routes.<tên Route>.map.N = <tên Param>
resources.db.adapter = "pdo_mysql"
resources.db.params.host = "localhost"
resources.db.params.username = "xxx"
resources.db.params.password = "xxx"
resources.db.params.dbname = "xxx"
resources.db.isDefaultTableAdapter = 0|1
resources.db.params.options.<tên Option> = <value Option>
resources.db.params.charset
resources.db.params.persistent
;Pdo_Mysql
resources.db.params.driver_options.1002 = "SET NAMES UTF8;"
;Db2
resources.db.params.driver_options.autocommit
resources.db.params.driver_options.DB2_ATTR_CASE
resources.db.params.port =
resources.db.params.protocol
resources.db.params.persistent
resources.db.params.os
resources.db.params.schema
Tạm thời vài thứ như thế, còn nhiều nữa, khi nào có thời gian mình lại đào sâu vào cung cấp thêm cho các bạn...


