一、index.php的变化:
<?php
chdir
(
dirname
(
__DIR__
)
)
;
// Setup autoloading
include
'init_autoloader.php'
;
// Run the application!
ZendMvcApplication::
init
(
include
'config/application.config.php'
)
->
run
(
)
->
send
(
)
;
和之前的zf1教程不同,这段程序调用init_autoloader.php来完成初始化工作,而不是在index.php里直接输入初始化代码,在zf1里面也可以这么进行,应该属于示例教程本身的优化.
初始化完成后,执行
ZendMvcApplication::
init
(
include
'config/application.config.php'
)
->
run
(
)
->
send
(
)
;
运行整个程序。
zf2里面有了一个很大的改变就是使用了namesapce: ZendMvcApplication::init(......)
查看library/zend下的库文件,发现全部由前缀的明白方式改成了namespace的命名方式。
二、init_autoloader.php
$zf2Path
=
getenv
(
'ZF2_PATH'
)
?
:
(
is_dir
(
'd:/files/htdocs/zf2/library'
)
?
'd:/files/htdocs/zf2/library'
:
false
这行代码用于指定zend framework2的库文件路径,尽管在示例中无效,我们还是可以看到,系统建议使用getenv(‘ZF2_PATH’)来获取此路径,如果要让ZF2_PATH有效,就需要先在httpd.conf或.htaccess里添加一行: SetEnv ZF2_PATH d:/files/htdocs/zf2/library 这样做的好处是设置不在程序代码中,不小心被误覆盖的可能性小很多。
include
$zf2Path
.
'/Zend/Loader/AutoloaderFactory.php'
;
ZendLoaderAutoloaderFactory::
factory
(
array
(
'ZendLoaderStandardAutoloader'
=
>
array
(
'autoregister_zf'
=
>
true
)
)
)
;
手工载入autoloader,zf1里面,autoload是自动加载的。
三、config配置文件的变化: config不再使用ini文件作为默认配置文件方式,而采用了array方式,这和很多其它框架比如codeigniter是一致的,数组的效率比ini会高很多。 另外教程里还演示了配置文件嵌套的方法: application.config.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
return
array
(
'modules'
=
>
array
(
'Application'
,
'Album'
,
)
,
'module_listener_options'
=
>
array
(
'config_glob_paths'
=
>
array
(
'config/autoload/{,*.}{global,local}.php'
,
)
,
'module_paths'
=
>
array
(
'./module'
,
'./vendor'
,
)
,
)
,
)
;
其中的
config
/
autoload
/
{
,
*
.
}
{
global
,
local
}
.
php
加载了autoload文件夹下的所有配置文件,这个写法,其实只是为了演示,有点冗余,可以改成:
config
/
autoload
/
{
*
}
.
php