博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
转载:Zend Framework 配置文件怎么写呢?
阅读量:4841 次
发布时间:2019-06-11

本文共 4730 字,大约阅读时间需要 15 分钟。

以下内容转载自:

谢谢前辈的分享

Zend Framework 版本 1.10

在应用程序的初始化引导过程中,主要由Zend_Application类对配置文件进行加载。Zend_Application_Bootstrap_BootstrapAbstract类也会根据配置文件加载相应的引导资源类。因此我们只要看看Zend_Application类的setOptions()方法和Zend_Application_Bootstrap_BootstrapAbstract的setOptions()方法,便大概可以知道配置文件应该怎么写了。

下面以Ini配置文件为例。

先看Zend_Application类的setOptions()方法

 

 

/*
*
* Set application options
*
* @param array $options
* @throws Zend_Application_Exception When no bootstrap path is provided
* @throws Zend_Application_Exception When invalid bootstrap information are provided
* @return Zend_Application
*/
public
function
setOptions(
array
$options
)
{
//
如果键config不为空,加载config文件
if
(
!
empty
(
$options
[
'
config
'
])) {
if
(
is_array
(
$options
[
'
config
'
])) {
$_options
=
array
();
foreach
(
$options
[
'
config
'
]
as
$tmp
) {
$_options
=
$this
->
mergeOptions(
$_options
,
$this
->
_loadConfig(
$tmp
));
}
$options
=
$this
->
mergeOptions(
$_options
,
$options
);
}
else
{
$options
=
$this
->
mergeOptions(
$this
->
_loadConfig(
$options
[
'
config
'
])
,
$options
);
}
}
$this
->
_options
=
$options
;
$options
=
array_change_key_case
(
$options
,
CASE_LOWER);
$this
->
_optionKeys
=
array_keys
(
$options
);
//
设置php的配置
if
(
!
empty
(
$options
[
'
phpsettings
'
])) {
$this
->
setPhpSettings(
$options
[
'
phpsettings
'
]);
}
//
设置加载路径
if
(
!
empty
(
$options
[
'
includepaths
'
])) {
$this
->
setIncludePaths(
$options
[
'
includepaths
'
]);
}
//
设置自动加载的命名空间
if
(
!
empty
(
$options
[
'
autoloadernamespaces
'
])) {
$this
->
setAutoloaderNamespaces(
$options
[
'
autoloadernamespaces
'
]);
}
//
设置自动加载zend framework 的路径
if
(
!
empty
(
$options
[
'
autoloaderzfpath
'
])) {
$autoloader
=
$this
->
getAutoloader();
if
(
method_exists
(
$autoloader
,
'
setZfPath
'
)) {
$zfPath
=
$options
[
'
autoloaderzfpath
'
];
$zfVersion
=
!
empty
(
$options
[
'
autoloaderzfversion
'
])
?
$options
[
'
autoloaderzfversion
'
]
:
'
latest
'
;
$autoloader
->
setZfPath(
$zfPath
,
$zfVersion
);
}
}
//
设置自定义的bootstrap类
if
(
!
empty
(
$options
[
'
bootstrap
'
])) {
$bootstrap
=
$options
[
'
bootstrap
'
];
if
(
is_string
(
$bootstrap
)) {
$this
->
setBootstrap(
$bootstrap
);
}
elseif
(
is_array
(
$bootstrap
)) {
if
(
empty
(
$bootstrap
[
'
path
'
])) {
throw
new
Zend_Application_Exception(
'
No bootstrap path provided
'
);
}
$path
=
$bootstrap
[
'
path
'
];
$class
=
null
;
if
(
!
empty
(
$bootstrap
[
'
class
'
])) {
$class
=
$bootstrap
[
'
class
'
];
}
$this
->
setBootstrap(
$path
,
$class
);
}
else
{
throw
new
Zend_Application_Exception(
'
Invalid bootstrap information provided
'
);
}
}
return
$this
;
}

首先,如果"config"不为空,递归加载配置文件。

这也就是说:我们可以有多个配置文件,但是在初始化Zend_Application对象的时候,只要把主配置文件的路径作为参数传给Zend_Application的构造函数就可以了。我们可以把不同的配置分成多个配置文件,如php配置的写在一个配置文件,数据库的配置写一个配置文件,引导资源的配置写一个配置文件,然后写一个主配置文件,其它包含之前的那些配置文件就可以了,如:

主配置文件:

 

[
yourenvironment
]
config.phpsettingconfig
=
APP_ROOT "/config/phpsettingconfig.ini"
config.dbconfig
=
APP_ROOT "/config/dbconfig.ini"
config.resourceconfig
=
APP_ROOT "/config/resourceconfig.ini"

这样,我们就不必把配置都写在一个配置文件中,可以分开几个,逻辑划分上更加清晰。

 

然后,键为phpsettings的,调用setPhpSettings()方法进行设置

也就是说php配置我们也可以写在Zend Framework的配置文件里。如下面是phpsettingconfig.ini的内容

 

 
[yourenvironment]
phpSettings.date.timezone
=
"
Asia/Shanghai
"
phpSettings.display_startup_errors
=
1
phpSettings.display_errors
=
1

此设置跟php配置文件php.ini基本一样,只要在设置项前加phpSettings就可以了(phpSettings大小写不限)

 

再看一下如果在配置文件里设置自定义的bootstrap文件

 

[
yourenvironment
]
#可以是一个文件名字符串,此时你的自定义bootstrap类的类名必须是默认的
"
Bootstrap
"
bootstrap
=
APP_ROOT
"
/application/bootstrap.php
"
 
#如果你的类名不叫
"
Bootstrap
"
而是叫
"
MyBootstrap
"
,
你可以这样配置
bootstrap.path
=
APP_ROOT
"
/applicaton/bootstrap.php
"
bootstrap.class
=
"
MyBootstrap
"

 

 

 在Zend_Application中对配置项的引导,大概就这些。

引导资源的初始化,主要是在Zend_Application_Bootstrap_BootstrapAbstract类的setOptions()方法中。

Zend_Application_Bootstrap_BootstrapAbstract类的setOptions()方法主要功能是根据配置文件设置引导资源的加载目录,以及根据配置文件初始化引导资源。根据配置文件初始化引导资源主要体现在如下代码中:

 

if
(
in_array
(
$method
,
$methods
)) {
$this
->
$method
(
$value
);
}
elseif
(
'
resources
'
==
$key
) {
//
或者是注册引导资源
foreach
(
$value
as
$resource
=>
$resourceOptions
) {
$this
->
registerPluginResource(
$resource
,
$resourceOptions
);
}
}

也就是说配置文件中resources开头的配置项,都会作为引导资源

如数据库的配置

 

[
yourenvionment
]
resources.db.adapter
=
PDO_MYSQL
resources.db.params.host
=
localhost
resources.db.params.username
=
root
resources.db.params.password
=
resources.db.params.dbname
=
test

如果把ini文件描述成一个数组,那么$ini['resources']['db']将作为一个构造函数的参数,传给Zend_Application_Resource_ResourceAbstract的构造函数。

然后,adapter 映射 Zend_Application_Resource_Db类的中setAdapter()方法,$ini['resources']['db']['adapter']的值作为setAdapter()方法的参数。params映射Zend_Application_Resource_Db类的中setParams()方法,$ini['resources']['db']['params']的值作为setParams()方法的参数。

转载于:https://www.cnblogs.com/PHP001/archive/2011/10/11/2206762.html

你可能感兴趣的文章
2015年9月28日JQuery提前预习预热笔记
查看>>
perl 删除过期文件
查看>>
document.write与document.getElementById的区别
查看>>
搜索可用docker镜像
查看>>
python基础知识梳理-----7函数
查看>>
函数极限的定义
查看>>
POJ 3684 Priest John's Busiest Day 2-SAT+输出路径
查看>>
oracle10g、oracle client和plsql devement 三者之间的关系
查看>>
ICDM评选:数据挖掘十大经典算法
查看>>
巧用「打印」功能实现PDF单页提取
查看>>
【转】Mongo初体验
查看>>
Java中synchronized和同步方法
查看>>
C语言学习记录_2019.01.29
查看>>
个人简历
查看>>
7 Sentences You Shouldn't Say to Your Boss - EVER
查看>>
TurtleBot3-基础例程
查看>>
动态规划之矩阵链
查看>>
Chrome 中的 JavaScript 断点设置和调试技巧 (转载)
查看>>
在Linux shell脚本中root切换到普通用户执行脚本或命令的方法
查看>>
rem,em,px
查看>>