Zend Framework 2 抢先体验

新一代的PHP框架Zend Framework 2 诞生了,它基于Zend Framework 1,仅支持PHP 5.3,它将在将来一年里取代其旧版本。php

初探

由于熟悉Zend Framework 1,我决定进入2.x beta版本,看看有什么变化,并测试对已有的程序是否有影响。css

Rob Allen写过一个教程很适合那些从没用过Zend Framework框架的人。你能够经过git克隆(或下一个zip包)来安装框架,并增长一些应用模块。html

若是你想玩一个已经写好的框架程序,那么一个包含了实现数据库表的CRUD模块的程序,比起仅仅是“HelloWorld”的程序要好不少。git

框架之因此好,是由于它已经包含一些功能模块及.htaccess。因此你只须要在Apache上配置,就能够运行起来。之前,一个新手在建立程序以前都要先配置好Zend Framework 1,我不敢说第一次使用Zend_Tool和ZF都是那么简单。数据库

如今让咱们来看看新框架的变化 - 目录结构:框架

Application/
    config/
    src/
    views/

每一个模块代码(类)都是从配置和视图模板中分离的,而不是强迫分开于控制器、模型、服务和其余对象。布局

这也意味着,理论上你想去掉在一个应用模块,只须要去掉一个单独的文件夹。但这并不意味着模块之间没有关联,例如:两个步骤的视图布局,就能够指定使用其余的模块。这只须要将两个模块的配置合并成一个。学习

新标准

做为一个新的主要版本,该框架也采用新标准,并中断对以前版本的兼容性,就像Symfony 2。测试

1.仅支持PHP 5.3,使用类的命名空间,再也不使用下划线来分隔虚拟包。fetch

2.采用PSR-0 autoloading,全部模块都在src/文件夹下,因此再也不匹配类名和文件名。

3.再也不有接口后缀的命名。

4.异常采用接口,因此PHP 5.3的异常是由一个模块继承和实现的(例如:Zend\Json\Interface)。

5.再也不有下划线前缀来强调私有(private)和保护(protected)的属性和方法。

从上述可见,新标准并无带来什么革命性的标志,而是它让Coder在写新代码的时候减小了一些负担的。

不彻底轻量

配置有点长,但控制得当:例如,键名'di',在一个模块的配置文件中包含全部的类及参数。可能有人以为整个框架变得意外的复杂了,但咱们不得不接受,为了使用其所有的特性。

另外一个点,我以为有必要提的是Module.php的配置。它被定义成自动加载的模式,这是很标准的作法。这样咱们就不会苦恼于如何加载它们。

控制器相对于Zend Framework 1变得轻量了:它们在注入对象的时候能够指定setter,而不是去搜索周围的对象。这并非一个什么神奇的功能:由于你能够在配置中指定setter的列表,并将引导你去思考它们的关联性及数量。总的来讲控制器减轻了,甚至(理论上)可实例化。

Action返回一个视图模型,因此使他们不须要知道视图对象:

class AlbumController extends ActionController
{
    /**
     * @var \Album\Model\AlbumTable
     */
    protected $albumTable;

    public function indexAction()
    {
        return array(
            'albums' => $this->albumTable->fetchAll(),
        );
    }

    public function setAlbumTable(AlbumTable $albumTable)
    {
        $this->albumTable = $albumTable;
        return $this;
    }   
}

与1.x的类似点

一些惯例和API与Zend Framework 1一致,这意味着你不须要再次学习它们:

1.控制器的API及其助手:在控制器里你能够得到请求,及其余混合特征,如重定向。

2.表单容许定义元素(标签、验证和过滤器),并在子类中提供的初始化方法init()。

3.视图一般遵循文件夹结构<controller>/<action>.phtml;一样$this可调用escape()和url()等视图变量。

基本数据库的支持也是基于Table Data Gateway 类及其扩展。固然你能够选择整合Doctrine2或其余ORMs。

总结

请注意下面的问题:为何我要使用Zend Framework 2来替代Symfony 2?
提供一个观点:ZF2相对于使用Zend Framework 1的程序来讲,有更简单容易的代码升级方式,而且你已经有了ZF的使用经验。此外,它的设计并不落后于Symfony,并且不用所有重写。

本文为原创翻译
英文链接
http://css.dzone.com/articles/zend-framework-2-tryout

相关文章
相关标签/搜索