Application.ini (Zend) toàn tập


A. Các loại file cấu hình mà ZF hỗ trợ:
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ã:
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 :rolleyes1: đế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 :tongue1: . 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

Theo zend.vn

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s