通常情况下,我们对于Zend框架的环境变量设置会在public文件夹下的.htaccess文件中定义,并且在index.php文件中将其实现,请看以下两段代码:
1.
SetEnv APPLICATION_ENV development
1.
$application
=
new
Zend_Application(
2.
APPLICATION_ENV,
3.
APPLICATION_PATH .
'/configs/application.ini'
4.
);
我们在创建Zend_Application类实例的时候,定义了这个项目的运行环境,并且引入了Zend_Applicaiton的配置文件,下面仔细研究一下Minhlog配置文件中的部分定义:
01.
[production]
02.
# phpSetting
03.
phpSettings.display_startup_errors = 0
04.
phpSettings.display_errors = 0
05.
phpSettings.date.timezone = "Asia/Shanghai"
06.
phpSettings.magic_quotes_gpc = off
07.
phpSettings.session.auto_start = 0
08.
09.
# include settiong
10.
includePaths.library = APPLICATION_PATH "/../library"
11.
12.
# bootstrap setting
13.
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
14.
bootstrap.class = "Bootstrap"
15.
16.
# resource settiong
17.
pluginPaths.Minh_Resource = APPLICATION_PATH "/../library/Minh/Resource/"
18.
19.
# frontController setting
20.
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
21.
resources.frontController.moduleControllerDirectoryName = "controllers"
22.
resources.frontController.defaultModule = "frontend"
23.
resources.frontController.env = APPLICATION_ENV
24.
resources.frontController.plugins.common = "Minh_Controller_Plugin_Common"
25.
26.
# view setting
27.
resources.view.params.frontend.scriptPath = APPLICATION_PATH "/modules/frontend/views/scripts/default/"
28.
resources.view.params.frontend.helperPath = APPLICATION_PATH "/modules/frontend/views/helpers/"
29.
resources.view.params.frontend.route = ""
30.
resources.view.params.backend.scriptPath = APPLICATION_PATH "/modules/backend/views/scripts/default/"
31.
resources.view.params.backend.helperPath = APPLICATION_PATH "/modules/backend/views/helpers/"
32.
resources.view.params.backend.route = "/backend"
33.
34.
# db setting
35.
resources.db.adapter = "pdo_mysql"
36.
resources.db.params.host = "localhost"
37.
resources.db.params.username = "root"
38.
resources.db.params.password = ""
39.
resources.db.params.dbname = "minhlog"
40.
resources.db.params.charset = UTF8
41.
resources.db.params.dbPrefix = "mlog_"
42.
resources.db.isDefaultTableAdapter = true
43.
44.
[staging : production]
45.
46.
[testing : production]
47.
phpSettings.display_startup_errors = 1
48.
phpSettings.display_errors = 1
49.
50.
[development : production]
51.
phpSettings.display_startup_errors = 1
52.
phpSettings.display_errors = 1
可以看到在实例化zend_application时,由于我们设定的APPLCATION_ENV是development,所以载入的配置文件是development段,[development : production]可以看作类似xml格式的结构。
1.
<
DEVELOPMENT
>
2.
<
PRODUCTION
>
3.
...
4.
</
PRODUCTION
>
5.
</
DEVELOPMENT
>
而staging和testing区段的内容将不会被载入,这样可以很好的区分开发,测试,生产三个环境的不同服务器配置细节,例如生产环境中可能需要配置缓存,而开发环境则不需要缓存,等情况。
之后,我们可以通过扩展Zend_Application_Resource_ResourceAbstract类,实现自己的Resource定义,把每一个细节,如DB访问,Router路由定义,View视图的路径加载等作为一个独立的资源加载进来。我将在下一篇文章中介绍如何扩展并创建自己的Zend_Application资源,敬请关注。