有一天我跟在DUMBO的一个非常棒的创业公司的老板聊天谈到为什么非PHP界的开发人员普遍轻视PHP和PHP相关社区他提出了一个观点让我印象很深很大程度上是因为以前从来没有听到过这样的说法
如果你不知道大多数的程序员都会对PHP发什么样的牢骚那么这些牢骚差不多会像这样
语法丑陋
缺乏其它语言都有的一些必要的特征(在版本之前没有命名空间闭包)
不一致的函数命名使用惯例以及其它一些怪异的东西
过程和面向对象的杂混
基本上%的PHP项目都烂如一堆狗屎
但他所说的PHP的问题却是另外一个问题他并没有说这种语言有问题——他认为这种语言被一种常见的文化现象包围着是一种通常由语言的创造者造就的文化传统现在看来这对一些糟糕的编程实践方法起到了鼓励作用也就是它使PHP代码变的劣质和不可维护
这种一个语言或框架上体现出创始人的哲学思想并被相关社区推崇的现象是的确存在的他拿出来Ruby和其创始人Matz作为例子Matz想要的是一种易读易写能提高程序员工作效率的语言没看见Ruby开发人员们言之必称快速开发以及这种语言的优雅?
接着就是DHH 和他的Rails框架还有Guido和他的Python语言于是我在想Rasmus对于PHP呢?
Rasmus Lerdorf给人的印象非常的有趣他创建了最初版的PHP语言而且一直在改进这种语言他在PHP社区里被当作神一样崇拜他在PHP的任何方面都 享有最大的权威他被众多的会议邀请去做演讲同时被大网络公司(yahoocom)所雇用他获得了所有人的尊敬——尽管有这样一种事实他成了大多 数的非PHP程序员所鄙视的PHP上的众多问题的形象代表
Rasmus倡导避免使用框架而把PHP更多的当作一种模板语言对他来说这种做法能产生直接的运行效率和可扩展性(程序负载可知)而对于其 他的所有人来说这种做法导致了大量的乱炖似的过程式代码大量的无法维护的项目自从年PHP诞生至今大概年左右的时间里所有的PHP项 目都是按照这种指导写成的
与此同时另外一个问题突然的出现了在PHP之前PHP的初期PHP获得了大量的新手的追随这种语言的入门门槛出奇的低任何人都可以 下载自解压的×AMP Windows程序安装包在两分钟内用上这种语言除此之外那时在Web开发方式上对MVC模式的共识并没有真正的出现这样一来你可以想象一群 新手和一个缺乏好的开发实践方法的语言组合到一起能创造出什么?一堆无法维护的垃圾而且整个大环境都是这样
不要误解我的话——优秀的PHP开发者还是不少的即使是当时但是就像我说的粗制滥造的菜鸟作品到处都是当牛仔式无羁的PHP程序员在没有 指导原则的情况下聚集到一起开发程序于是像PHPbb PHPNuke以及很多的粗糙的php程序包就出现了但是你能单纯的责怪PHP开发人员吗?不能!其它的Web语言巨人ASP和Perl同样恶 名远扬同样宣传着一种乱炖式的开发方式
所以这就是为什么PHP会得到这样的骂名是因为它的历史流传大多数已经转向PythonRuby和Java的PHP开发人员并没有在MVC概 念兴起时回头去重新思考这种语言此外更有一些像”Ruby公子“Zed Shaw抱怨一些程序员的思想”受PHP毒害“这样的露骨的讽刺像这样的言论在RubyInside上很盛行
PHP是个集中营
但像Zend和CodeIgniter这样的框架的出现把这种语言推向了正确的开发方向上事实上它把PHP推向了与Rasmus所希望看到的相反的方向上了查看一下Zend和CodeIgniter框架你会发现它们是为数不多的文档写的很好代码写的很好的程序
大多数学习了Ruby的开发人员同时都要学习Rails和MVC知识PHP在此之前已经被使用了整整年对于那些新手来说可恶的Ruby没 有给他们这段时间让他们自由发挥Rails有现成的标准指导它的入门门槛相对高很多通常会把一些缺少经验的开发人员挡在门外
事实上PHP应用程序是可以向其它种语言那样写的很好而且还会具有一定的运行速度上的优势PHP世界里的MVC风格的开发方法兴起只是在近几年才出现的现象不得不承认我们应该感谢Rails带来的这种变化
那么PHP如今是个什么样呢?
各种标准(非统一但大多数项目使用MVC很少有垃圾般的过程式程序)
很低的入门门槛
速度和可扩展性(在各种脚本语言里PHP应该是最好的)
有一个好的单元测试框架
有最好的各国语言翻译的文档
除此之外互联网上大多数有影响的网站都使用PHP作为它们后台的语言或工具诸如FacebookDigg维基百科WordpressDrupal等等我相信对PHP有一个深入的掌握会使一个程序员打开更多的未知领域的大门
如果你不赞同上面所说的请留下评论或email给我——我想听听你为什么不这么认为
事实上我并不是一个PHP迷我对语言没有感觉我使用PHP大多是因为——你猜到了——有人愿意付钱给我所以一切归咎于此
如果你希望在软件设计上做出明智的决定PHP是你开发Web应用程序的最佳选择
顺便说一下如果你确信要使用PHP来开发下一个Web应用请试一试CodeIgniter它是一个轻量级的普通的超级快的PHP框架对于CodeIgniter我是个粉丝