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了;它还加入多种执行模式,在应用上变得更加地丰富:
但也因为功能的多样化,使得原来单纯处理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 ( SimpleTest 、 PHPUnit )、 Refactoring等观念与技术;另外MVC Framework 、 ORM等加速开发效率的工具也大量地被创建出来,让开发者能更快速且更有系统地完成他们的工作。
这些技术都需要有更高阶的语言特性才有办法进行,也因为如此使得PHP不得不做出改变。 例如:
- 更多元的面向对象特性: Reflection 、 SPL等。
- 更强大的安全机制: Data Filtering及其他相关安全议题的改良等。
- 更抽象的资料处理: PDO等。
- 更便利的文件格式操作: JSON 、 XML Parser 、 DOM等。
而且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

回应:以前的PHP有很多缺陷
你的 PHP 比我的糟,因為你只懂得抱怨
PHP很烂?我的看法
博主太有才了!我学习了