PHP头条
热点:

新里程碑到来 开启PHP框架的新时代(1)


51CTO 精选译文】我曾在不同的系统和项目中埋头度过了很多年,大部分时间都花在了PHP上。然而就在最近,我注意到一个新的里程碑到来了——PHP框架的新时代。5月21日我在荷兰PHP大会上讲话时谈到这个问题,引发的热烈讨论也让我感到非常有趣。在最近的日子里好像一切都在变化。本文中我想要说说我所认为的PHP目前处在什么状态,哪些地方有问题,还有众多新出现的框架会怎样改变它。

框架的诞生

PHP框架的新时代

图一 我使用PHP框架

6年前出现的CakePHP大概是第一个PHP框架,在它以后,我们见到了大量的PHP框架。目前的数量……可能大约有一百万了,这些框架使用着不同的MVC、DBAL和模板实现,我喜欢它们,即使它们各有各的古怪,而且都仍然没有得到大规模的采用。

如果你想要上网找找那些以框架为基础开发的PHP开源项目,能够找到的只有数量很少的一些,这很令人惋惜。部分原因是这些开源项目有很多在发布时甚至还没有任何PHP框架存在,另有部分原因是想用PHP框架来开发确实需要学习相当一段时间。也就是说如果一个PHP项目如果想用框架开发就会增加不少学习难度,至少在大多数情况下。

不过框架们的出现已经确实开始改变了我们开发PHP的方式。许多开发者喜欢在口头上声称他们懂得面向对象,但是当框架出来后,他们要被迫证明他们真正懂得OOP和它的工作方式。如今你要是再让人用mysql_query可能脸上会挨上一两拳,因为他们现在还需要用到mysql_real_escape_string。

框架是怎么做的呢?

没有人真正知道PHP框架应该是什么样子的,它们应该有什么功能。因此,人们是怎么把它们开发出来的呢?好的,他们要么是跟着其他语言(比如RoR)的现有框架照猫画虎,要么是自己拍脑门。因为不存在什么经验可言,现如今大多数的框架都是传统设计的,每个人都知道有问题,但却没法解决。

PHP开发者一贯的务实做法在这里给了很大的帮助——就像PHP作为一种语言在不停进化一样,PHP框架也在不断的根据反馈而改变和成长。有几年里多数人都对已经拥有的功能感到满足了,但是如果你现在再回头看看2007年的Zend Framework 1.0,和1.11相对比功能已经天差地别。因此,即使在今天,框架也正在迅速的发展来满足功能的需要。

PHP 4曾经得到所有PHP框架的支持(令人惊讶的是现在一些框架仍然支持)。这导致了大量的过时代码,特别是OOP模式。试图支持旧版本的PHP让新功能执行起来过于复杂,修正错误也愈发艰难。而且,越来越少的开发者想要面对着这些旧代码工作。

什么出问题了?

PHP框架的新时代

图二:每用一次PHP魔术函数,都有一只猫要死于非命! “魔法杀戮”

首先,回到PHP魔术函数(__get、__call等等这些)盛行的年代。初看上去它们没有什么错,但它们实际上是非常危险的。它们让API变得模糊不清,不能自动处理,最重要的是它们很慢。对魔术函数来说,它们的用例就是让PHP被破解而做不想做的事情,它们有用处,但是会发生错误的事情。

SCOP——Static class oriented programming,面向静态类编程,这是我发明的术语,用来描述大部分PHP代码。静态方法从很多方面来说都有问题,但更重要的是,如果一个类只作为静态方法的集合,那么它就离OOP越来越远了,它只是使用类来作为存放各种函数的容器,但是甚至有完整的框架就在做这个。

Zend Framework在很长一段时间是我最喜欢的PHP框架(现在对于PHP 5.2仍然适用),但我和它之间的主要问题是它总是过于卖力的想成为一个组件库。而且其他框架和它走着相同的路——它们各写各的类库,但却不使用现有的库。这就搞得PHP有那么多独立的库,你想要使用就需要下载整个框架,臃肿的框架真令人头疼。


www.phpzy.comtrue/php/8948.htmlTechArticle新里程碑到来 开启PHP框架的新时代(1) 51CTO 精选译文】 我曾在不同的系统和项目中埋头度过了很多年,大部分时间都花在了PHP上。然而就在最近,我注意到一个新的里程碑到来了PHP框架...

相关文章

相关频道:

PHP之友评论

今天推荐