乱评PHP框架难成大器的三大主因

开发 前端
PHP框架之路一直充满着争议,从PHP要不要用框架,到应不应该模仿Rails,却抵不上PHP框架的井喷式的增长,各类框架你方唱罢我登场,网上仅仅是罗列部分框架和简介就能成为一片文章,名为《国外十大最流行PHP框架排名》。

自从Rails刮起了一阵框架风,其它语言群起响应,Java,Python,Scala,PHP,无论静态动态语言都出现了模仿Rails模式的框架出现,其中,PHP语言的框架生产力更是***,主流的PHP框架就有超过5种,加上不出名的框架的话,我估计起码有20多种框架,可怕的数量!!

PHP框架之路一直充满着争议,从PHP要不要用框架,到应不应该模仿Rails,却抵不上PHP框架的井喷式的增长,各类框架你方唱罢我登场,网上仅仅是罗列部分框架和简介就能成为一片文章,名为《国外十大***PHP框架排名》。PHP框架中比较知名的有:CodeIgniter、CakePHP等中小型框架和Zend、Symfony等大型框架。我一直在想为什么PHP的框架数量如此之多呢?

1. PHP开发框架太‘容易’了

不要骂我,说实话,PHP开发Web框架的门槛比起其他的语言,真的要低太多了,PHP本身已经有了对Web的支持,要做一个框架,只要先写一个单入口index.php,然后通过module和action参数执行对应的Controller类,和View代码,一个非常简单的框架就好了,熟练的程序员一两天就完成了。如果觉得太简单,再稍微封装一下,把$_REQUEST,$_SESSION封装一下,封装一下数据库操作等等。到这里一个有模有样的PHP‘MVC框架’就基本出炉了。熟练一点程序员一周时间搞定了。

相反其他语言,以ruby为例,光是对REQUEST的处理,参数解析等基础功能实现,就远远不止一周的工作量,在加上ruby语言的高灵活性和复杂的语法,使他开发一款拿的出手的框架所需要的精力是大大的超越一般,开发框架的门槛低是PHP框架泛滥的因素之一。

2. PHP的封装能力弱,致使框架的灵活度不够

这也是事实,PHP的框架很多,但是一般要评估项目,来选择适当的框架,如果是一个简单的web项目,一般选择CodeIgniter、CakePHP这类框架,如果是大型的应用,也会选择Zend、Symfony等大型框架,因为你会发现使用Zend和CodeIgniter完全是两回事。

也许我说的抽象了,那我举个例子:在默认的PHP环境中,是没有AOP功能的,不能对类的已有方法进行功能性增强,在需要实现类似功能的情况下,你就需要显示的修改外面的代码,非常流行的做法是利用PHP的魔法函数,但是依然需要修改对象的创建方法。

依然对比Ruby,它几乎是内置了AOP支持,可以在完全外部调用完全不变的情况下完成功能的增强。

在框架的封装中这种能力的差异就更加的显著,在PHP中框架复杂度高也提高了使用者的难度,而不能像Ruby等完全将复杂性隐藏在框架的内部。(说句题外话:javascript也是如此,jquery便是佐证)。

3. PHP的实现机制,使得框架的性能成为诟病

PHP的运行模式,每次request结束都会完全释放所有资源,导致框架的加载成为了一个不可忽视的性能累赘,即使你不介意上面提到大型框架的使用复杂度高,这个原因也让你不会在中小型项目中轻易使用Zend等大型框架。同时也限制了框架的能力。

据我分析,正是这三个原因,使得PHP的框架如此之多,但是没有一个成为真正的主流。这种情况未必是好事,在Ruby中,Rails一统,使得Rails社区***繁荣,很多Ruby高手开发各种插件增强的它的功能。使得它有着十分良性的发展。在js框架中jquery也有着相同的经历。

在PHP中,高手则是不停的贡献它们的新框架,老实说我个人觉得帮助很有限,更是搅浑了这一缸水,其实很多框架完全可以合并为一个发展,与其出现100个60分的框架,不如出现一个100分的好框架。PHP框架,多的让我伤不起啊伤不起。

原文链接:http://www.iteye.com/topic/1071177

【编辑推荐】

  1. 新里程碑到来 开启PHP框架的新时代
  2. PHP框架发展存四误区 死穴不除难成大器
  3. 基础知识回顾:为什么要使用PHP框架?
  4. 几款主流PHP框架的优缺点评比
  5. 国外十大***PHP框架排名
责任编辑:陈贻新 来源: renzhen的博客
相关推荐

2010-12-21 09:08:02

PHP框架

2018-12-18 09:04:13

5G网络人工智能

2018-12-06 13:29:31

网络5G物联网

2024-10-24 08:00:00

Web开发编程语言框架

2011-10-10 09:08:07

编程语言排行榜

2016-03-10 11:21:57

H5前端框架

2012-04-20 14:03:43

PHP知识

2011-05-03 12:04:03

2018-06-14 14:07:57

Pythonweb框架

2009-05-13 09:11:44

Linux桌面OS

2010-11-08 13:39:05

网宿科技B2C企业网站

2013-09-03 13:09:30

谷歌诺基亚微软

2022-04-29 09:33:58

PHP框架Laravel

2011-07-05 17:45:07

PHP框架

2020-12-23 15:42:42

大数据大数据技术大数据框架

2009-05-12 17:57:12

Linux操作系统桌面

2017-04-07 14:53:32

华为

2011-07-05 18:01:18

2009-04-09 14:41:08

PHP框架MVCPHP

2011-05-23 09:21:08

点赞
收藏

51CTO技术栈公众号