Application.ini toàn tập

Zend_Cache, Zend_Config, Zend_Console_Getopt, Zend_Log, Zend_Memory,Zend_Debug, Zend_Environment, Zend_Loader, Zend_Registry, Zend_Version, Zend_Filter, Zend_Validate

Application.ini toàn tập

Gửi bàigửi bởi pn2design » 23/04/2010 10:05

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ã: 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 :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

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...
Chỉ có niềm đam mê thiết kế web
Hình đại diện của thành viên
pn2design
Mod of Month
 
Bài viết: 292
Ngày tham gia: 13/11/2009 10:15
Đến từ: Vùng đất chưa mưa đã thấm, rượu Hồng Đào chưa nhấm đã say
Gửi: thanks
Nhận: thanks

Re: Application.ini toàn tập

Gửi bàigửi bởi VietRuss » 23/04/2010 11:34

Khâm phục bác pn2design, bác mò Zend Application hay quá. Nếu ZendVN có portal thì phải đưa mấy bài kiểu này ra ngoài để mọi người xem đỡ phải tìm. :thumbup: Em đợi bài kế tiếp của bác. :tt1:
Học, học nữa, học mãi ...rồi hộc máu

Phát lương đúng ngày
Là góp phần xây dựng đất nước giàu mạnh


Danh sách nợ cafe: zinzin, nghientai (Soon update)
Hình đại diện của thành viên
VietRuss
Member Rank 5
 
Bài viết: 168
Ngày tham gia: 27/10/2009 12:21
Đến từ: USB
Gửi: thanks
Nhận: thanks

Re: Application.ini toàn tập

Gửi bàigửi bởi nghaiha » 23/04/2010 12:49

Không biết nói gì hơn. Quá tuyệt.
Diễn đàn Điện Việt Nam: http://dien.vn
Hình đại diện của thành viên
nghaiha
Member Rank 5
 
Bài viết: 100
Ngày tham gia: 16/03/2010 12:34
Đến từ: nơi mẹ tớ sinh tớ ra
Gửi: thanks
Nhận: thanks

Re: Application.ini toàn tập

Gửi bàigửi bởi rocknet » 23/04/2010 15:34

Hic, mình cũng thế , ko biết nói gì hơn ngoài... quá tuyệt :cool1:
Bác "oánh" vào chúng chỗ hổng của em rồi bác ạ !!! cái application.ini này sao em lơ tơ mơ lắm. :bored:
cũng ko hiểu mấy cái này. ví dụ: resource.***** ko hiểu là resource là gì ??? được định nghĩa ở đâu ??? có thể thay thế nó bằng từ khác đc ko ??? :confused1:

Em chờ bài viết tiếp theo của bác :wub1:
p/s: bác có nguồn nào tham khảo thì share cho anh em với. :wub1:
Hình đại diện của thành viên
rocknet
Member Rank 9
 
Bài viết: 33
Ngày tham gia: 12/03/2010 11:17
Gửi: thanks
Nhận: thanks

Re: Application.ini toàn tập

Gửi bàigửi bởi romance » 27/04/2010 13:19

bác pn2design giới thiệu thêm một số phương thức nữa đi, bài viết của bác hay quá :wub1:
Hình đại diện của thành viên
romance
Member Rank 9
 
Bài viết: 26
Ngày tham gia: 18/03/2010 15:47
Gửi: thanks
Nhận: thanks

Re: Application.ini toàn tập

Gửi bàigửi bởi pn2design » 28/04/2010 00:36

update thêm một ít nữa
Chỉ có niềm đam mê thiết kế web
Hình đại diện của thành viên
pn2design
Mod of Month
 
Bài viết: 292
Ngày tham gia: 13/11/2009 10:15
Đến từ: Vùng đất chưa mưa đã thấm, rượu Hồng Đào chưa nhấm đã say
Gửi: thanks
Nhận: thanks

Re: Application.ini toàn tập

Gửi bàigửi bởi son8xvn » 02/05/2010 14:33

tiếp tục đi bác ơi, sao lại mang con bỏ chợ thế :tt2:
Hình đại diện của thành viên
son8xvn
Member Rank 8
 
Bài viết: 55
Ngày tham gia: 02/11/2009 15:06
Gửi: thanks
Nhận: thanks

Re: Application.ini toàn tập

Gửi bàigửi bởi pn2design » 13/08/2010 20:08

Gần hết rồi mừ ^^, mấy đoạn sau này lùng bùng quá đang tìm cách trình bày sao cho dễ ^^
Chỉ có niềm đam mê thiết kế web
Hình đại diện của thành viên
pn2design
Mod of Month
 
Bài viết: 292
Ngày tham gia: 13/11/2009 10:15
Đến từ: Vùng đất chưa mưa đã thấm, rượu Hồng Đào chưa nhấm đã say
Gửi: thanks
Nhận: thanks


Quay về Core Infrastructure

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách.

cron
Web Analytics