一、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
| <?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文件夹下的所有配置文件,这个写法,其实只是为了演示,有点冗余,可以改成: