PHP框架的繁荣是正确的发展方向吗?

这个其实是源于 javaeye 上的这个讨论:http://www.javaeye.com/post/886707。最开始吸引我的是在 rails 板块上诸多专业玩 java 和 ruby 的人是如何评价 php 以及 php 框架的。在讨论中发现有一些值得学习和借鉴的地方。所以推荐大家完整阅读这个帖子。从技术性、知识面和娱乐性来讲,都是质量很高的。

我就简单说一下我对于 php 框架繁荣的看法:

1. “草根阶级”向“企业开发俱乐部”转变的必然途径。

用 php 的企业多了,市场占有率高了,经济效益就体现出来了。但是仅仅靠做做企业网站,搞搞论坛这个蛋糕还太小。同时 B2B、B2C 的繁荣,自然带来已有网站的改造问题。php 迈着坚定的步伐冲向“俱乐部”大门。但是门卫说了“贫民与狗不得入内”。于是 php 的规范化、可维护性发展如火如荼的展开了。首先是学习 java,从语言层面引入 java 的优点。然后是开发规范的建立,涌现出大批商业框架。包括 php 的后台老板 zend,也推出自己的 Zend Framework。

2. php 从骨子里就是一个善于借鉴吸收的语言。

php 诞生伊始,是 perl 的跟班。后来 perl 跟班作得不爽了,就直接找到 perl 的老大 c 做跟班。这一作就是十几年。从最初跟 perl 学习,到后来跟  c 学习。然后 java 火了,跟  java 学习。再后来框架开发逐渐成为主流的时候,又开始搞有 php 特色的框架主义。当然还是延续原有风格与方法,好的东西一并吸收。吸收不良了再做改造。

3. php 框架是为了让php应用更加简单出现的。

我在 2004 年的时候搞过自己的一个小框架,实际上是整合了大量 pear 包的功能,自己利用 call_user_func_array 函数作为路由解析。使用 smarty 作为前端脚本。虽然有很多不足,但是在给朋友开发的几个项目中,“简单”这个原则体现得非常好。在只有美工和系统管理员的情况下,对网站进行了多次改版。并不是框架让我的朋友快速的学会了 php,而是框架让跳出语言细节的开发成为了可能。php 由于其发展方式决定了没有一个统一的功能调用界面,各种明明方式、调用方式混杂在一起,许多“学院派”对此尤为诟病。但是框架从一个新的高度上统一了这些本不统一的调用。从而使得开发更加简单、快捷。

好吧,最后我再说说许多 javaer 和 rubier 极力想证明的:“php 唯一的好处就是轻快,在套上沉重的框架枷锁后,它将没有任何优势同 java 或者 ruby 竞争。”其实这个问题就像老廖永远打不完的口水仗一样(老廖别急,这里纯粹调节气氛),没有最终的答案。不过有几点可以探讨:

1. php 已经有极高的市场占有率。并且回头客户很多。

2. php 在大型网站的应用不在少数,虽然许多是改造过的 php。

3. 性能在硬件发展迅猛的今天已经不是当年 64K 内存 2MHz 计算能力需要精打细算的年代。有更多事情远比性能重要。曾经道听途说过一种说法“与其高新聘请一个高级人才来优化程序,节约几十万的硬件成本。不如多花点钱用好硬件,弥补程序的不足。”想想也对,人才是在所有开发中最不靠谱的因素。

最后,我想用一句说得已经有点烂的话结束这个讨论:“事物总是在它应该出现的地方出现,应该消失的地方消失。”

8 thoughts on “PHP框架的繁荣是正确的发展方向吗?”

  1. 框架大部分都基于对象,这使得 PHP 不再“草根”,起码初学者入门的难度也得加大,这貌似有违当初 PHP 的原则,跟少林足球里的“人人有功练”也背道而驰。再者,框架的出现让性能产生了新的瓶颈是有目共睹的,这点在 Zend Framework 体现得淋漓尽致,磁盘 IO 消耗高企,已经不是我们能优化的级别了。至于规范化,我就更迷惘了,市面上开源的 PHP 框架估计不下20种,性能的评测也没有一个认可的指标,究竟用户选择哪种框架规范和能否达到预期的目标,只能看运了……

  2. php 本身就是一个具有争议的玩意。它的优点跟它的缺点一样多;或者,反过来。它的缺点跟它的优点一样多。
    所以 php 和 php 框架会出现在它们该出现的时候,并且会消失在该消失的时候。

  3. apc 用或不用主要还是在于开发的人。
    有些框架内建apc支持,有些虽然本身不支持,但是要增加并不困难。
    而且作为通用性考虑的框架来说,必须要考虑到环境不支持apc的情况。
    这跟银弹理论差不多,apc肯定也不会是 php 的性能银弹。

  4. 高级俱乐部永远少不了IBM的支持,熟不知ZEND framework的真正老板是IBM..

    味道符合IBM才是ZF的实质,zend早期也想找一个开源的改造,谁知IBM的特殊知识产权需求,让zend自造一份..

    OO的全应用非常糟糕,自我感觉良好之外,感觉上结构更加清晰外,好像并没有太多好处..
    随之带来的是更多资源占用,IO性能降低,制造门槛..

    说实在的,PHP的新吸取方向有点问题,应该从函数式和早期的python吸取经验..而非java..

  5. 使劲折腾吧。
    语言或编程这玩意。
    要像星际那样。多兵种配合,各种站烈站树使用才有效!

Leave a Reply

Your email address will not be published. Required fields are marked *