博采众长,精于一技。Live for love, work for dream.
2010-01-06程序设计

PHP开发迷思(三) – PHP很糟糕?

一直以来,很多Web开发者认为PHP不过只是个Scripting Language ,比不上JSP或是ASP.Net等重量级的专业开发环境。

所以你可以看到他们写的PHP几乎都是把PHP程序代码和HTML混杂在一起,或是跟著书本按表操课,因为他们觉得这种简单的工作只要能够交差了事就行了。

对他们来说: PHP会用就好啦! 真正专业的技术知识应该要从Java 、 C#或是其他正统的语言中学习!

虽然我不意外他们有这样的想法,但我更希望他们能重新认识PHP !

PHP想做什么?
其实一开始, PHP的确只是一个Rasmus Lerdorf (PHP之父)把C语言函式包装起来的Scripting Language ,它的目的很单纯地是想让CGI变得很简单。 所以严格来说, PHP一开始并不能称得上是一个语言,它只是一个很像C + Perl的Script Wrapper 。

然而随着版本的不断地演进, PHP也不再是只能处理Web CGI了;它还加入多种执行模式,在应用上变得更加地丰富:

  • CLI模式:PHP可以用来开发作业系统的Shell Script (详情可参考PHP CLI ) 。
  • GUI应用程序:开发视窗程序也变得非常轻松(详情可参考PHP-GTK ) 。

但也因为功能的多样化,使得原来单纯处理Web文字的PHP语法显得捉襟见肘。 因此,加入更现代化的语法成为PHP势在必行的目标之一。

注:关于PHP详尽的历史请参考Wiki上的说明 ,这里我就不再复制贴上啰。

语法的加强
然而PHP有着先天上的语法限制及函式名称的不统一,使得它招来了许多嫌它丑陋的嘘声。 还有PHP一开始也没有想过要变成一个真正的语言,而是在Web开发上能够易学易用;使得它无法像Python 、 Ruby一生下来就拥有优雅的语法,也没有Java或C#一样严谨的架构。

为了急起直追, PHP在每次重大的版本更新后,便不断加入新的语言特性;现在的PHP可以说是揉合了Perl 、 C 、 Java 、 JavaScript的一种语言:

  • Perl:最大的特色就是以$号为变量开头,使得「变量的变量」这样的写法在PHP简单又容易。
  • C: PHP的叙述语法采用C style ,这是大多数程序开发者习惯的语法。
  • Java: PHP 5散发了浓浓的咖啡味,它的面向对象特性有大部份参考自Java的类别与介面。
  • JavaScript:在PHP 5.3之后,也融入了Closure 、 Anonymous Function等(请参考PHP 5.3 New features ) 。

注:当然这么多特色的改进之下, PHP似乎成了四不像,所以在程序语言的狂热者看来, PHP似乎真的丑了点 。

不过PHP到底是为什么要把这么多特性加进来呢?

迈向更先进更稳固的开发模式
随着Web的多元化,现代的语言也必须跟着把自己在Web开发上的功能变得更强大;所以在PHP改版的同时,也不断地加强它的适应性。 像是Ajax与JSON开始崭露头角的时候, PHP 5.2就马上把json_encode()等相关的方法放到核心里。

而软件工程也渐渐被引入到PHP之中,使它拥有了Design Pattern 、 Unit Test ( SimpleTestPHPUnit )、 Refactoring等观念与技术;另外MVC Framework 、 ORM等加速开发效率的工具也大量地被创建出来,让开发者能更快速且更有系统地完成他们的工作。

这些技术都需要有更高阶的语言特性才有办法进行,也因为如此使得PHP不得不做出改变。 例如:


而且PHP还有更多的Extensions在背后支持着它,这些全都是为了让开发者能建立强大而稳固的程序!

结论
PHP与传统的ASP曾经占有Web开发上非常重要的一席之地,因为它们的出发点与开发过程都非常相似;然而在ASP已经式微的现在, PHP却依然毅立不摇。 因为PHP不但保留了原有简单易学的特性,还随着时代不断地改变它自己,朝着更好的方向演进。

当然,或许PHP的语法结构不如其他语言来得优美,也或许PHP的商业资源不比其他语言来得丰富;但是PHP真的不再是往日的吴下阿蒙,它在Web开发上的强大与效率就连Yahoo!都欣赏,选择PHP来开发自己旗下的网站服务。

很多不了解PHP的开发者容易忽略它在各种应用上的强大,而单纯只把它当做是和HTML混杂撰写的Script语言。 希望本文能做为一个楔子,让大家能重新了解PHP !

参考

翻译自:http://www.jaceju.net/blog/?p=936

日志信息 »

该日志于2010-01-06 02:27由 Rebill 发表在程序设计分类下, 你可以发表评论。除了可以将这个日志以保留源地址及作者的情况下引用到你的网站或博客,还可以通过评论 RSS订阅这个日志的所有评论。

相关日志 »

赞助链接 »

已有 2 条评论 »

  1. 回应:以前的PHP有很多缺陷
    你的 PHP 比我的糟,因為你只懂得抱怨
    PHP很烂?我的看法

  2. 博主太有才了!我学习了

添加新评论 »

返回顶部
无觅相关文章插件,快速提升流量