博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Zend Framework 2 抢先体验
阅读量:5838 次
发布时间:2019-06-18

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

  hot3.png

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

初探

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

Rob Allen写过一个很适合那些从没用过Zend Framework框架的人。你可以通过git克隆(或下一个zip包)来安装框架,并增加一些应用模块。

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

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

现在让我们来看看新框架的变化 - 目录结构:

Application/    config/    src/    views/

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

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

新标准

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

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

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,而且不用全部重写。

本文为原创翻译

英文连接

转载于:https://my.oschina.net/liux/blog/49313

你可能感兴趣的文章
虚拟运营商10月或大面积放号 哭穷背后仍有赢家
查看>>
Server2016开发环境配置
查看>>
分布式光伏发电建设中的逆变器及其选型
查看>>
增强网络安全防御 推动物联网走向应用
查看>>
UML中关联,组合与聚合等关系的辨析
查看>>
《大数据管理概论》一3.2 大数据存储与管理方法
查看>>
PowerBuilder开发简单计算器
查看>>
怎样使用linux的iptables工具进行网络共享
查看>>
《HTML5与CSS3实战指南》——导读
查看>>
RHEL6下安装oracle 10g(一)
查看>>
Kconfig的格式
查看>>
关于Cursor的moveToFirst和moveToNext的意义
查看>>
个人--工资划分5份
查看>>
有关文件下载的文件名
查看>>
史上最详细的wamp配置虚拟域名步骤
查看>>
oracle 授权
查看>>
lv扩展磁盘空间
查看>>
java8之stream流的基本操作
查看>>
二维数组计算协方差java
查看>>
SpringBoot下Redis相关配置是如何被初始化的
查看>>