搜索
首页后端开发php教程 为何说PHP是个集中营

为什么说PHP是个集中营

有一天我跟在DUMBO 的一个非常棒的创业公司 的老板聊天,谈到为什么非PHP界的开发人员普遍轻视PHP和PHP相关社区。他提出了一个观点让我印象很深,很大程度上是因为以前从来没有听到过这样的说法。

如果你不知道大多数的程序员都会对PHP发什么样的牢骚,那么,这些牢骚差不多会像这样:

  1. 语法丑陋
  2. 缺乏其它语言都有的一些必要的特征(在5.3版本之前,没有命名空间,闭包)
  3. 不一致的函数命名、使用惯例,以及其它一些怪异的东西
  4. 过程和面向对象的杂混
  5. 基本上80-90%的PHP项目都烂如一堆狗屎

但他所说的PHP的问题却是另外一个问题。他并没有说这种语言有问题――他认为这种语言被一种常见的文化现象包围着,是一种通常由语言的创造者造就的文化传统,现在看来这对一些糟糕的编程实践方法起到了鼓励作用。也就是它使PHP代码变的劣质和不可维护。

这种一个语言或框架上体现出创始人的哲学思想并被相关社区推崇的现象是的确存在的。他拿出来Ruby和其创始人Matz 作为例子。Matz想要的是一种易读易写、能提高程序员工作效率的语言。没看见Ruby开发人员们言之必称快速开发以及这种语言的优雅?

接着就是DHH ? 和他的Rails框架。还有Guido 和他的Python语言。于是我在想:Rasmus 对于PHP呢?

Rasmus Lerdorf给人的印象非常的有趣。他创建了最初版的PHP语言,而且一直在改进这种语言,他在PHP社区里被当作神一样崇拜,他在PHP的任何方面都享有最大的权威。他被众多的会议邀请 去做演讲,同时被大网络公司所雇用 ,他获得了所有人的尊敬――尽管有这样一种事实:他成了大多数的非PHP程序员所鄙视的PHP上的众多问题的形象代表。

Rasmus倡导避免使用框架,而把PHP更多的当作一种模板语言。对他来说,这种做法能产生直接的运行效率和可扩展性(程序负载可知)。而对于其他的所有人来说,这种做法导致了大量的乱炖似的过程式代码,大量的无法维护的项目。自从1995年PHP诞生至今大概10年左右的时间里,所有的PHP项目都是按照这种指导写成的。

与此同时另外一个问题突然的出现了:在PHP5.0之前,PHP的初期,PHP获得了大量的新手的追随。这种语言的入门门槛出奇的低,任何人都可以下载自解压的×AMP Windows程序安装包、在2两分钟内用上这种语言。除此之外,那时在web开发方式上对MVC模式的共识并没有真正的出现。这样一来你可以想象,一群新手和一个缺乏好的开发实践方法的语言组合到一起能创造出什么?一堆无法维护的垃圾。而且整个大环境都是这样。

不要误解我的话――优秀的PHP开发者还是不少的,即使是当时。但是,就像我说的,粗制滥造的菜鸟作品到处都是。当牛仔式无羁的PHP程序员在没有指导原则的情况下聚集到一起开发程序,于是像PHPbb、 PHPNuke以及很多的粗糙的.php3程序包就出现了。但是你能单纯的责怪PHP开发人员吗?不能!其它的web语言巨人,ASP和Perl,同样恶名远扬,同样宣传着一种乱炖式的开发方式。

所以这就是为什么PHP会得到这样的骂名。是因为它的历史流传。大多数已经转向Python,Ruby和Java的当年的PHP开发人员并没有在web上MVC概念兴起时回头去重新思考这种语言。此外,更有一些像”Ruby公子“Zed Shaw抱怨一些程序员的思想”受PHP毒害“这样的露骨的讽刺,像这样的言论在RubyInside上很盛行

PHP是个集中营

但像Zend和CodeIgniter这样的框架的出现把这种语言推向了正确的开发方向上。事实上,它把PHP推向了与Rasmus所希望看到的相反的方向上了。查看一下Zend和CodeIgniter框架,你会发现它们是为数不多的文档写的很好,代码写的很好的程序。

大多数学习了Ruby开发人员同时都要学习Rails和MVC知识;PHP在此之前已经被使用了整整10年。对于那些新手来说可恶的Ruby没有给他们这段时间让他们自由发挥。Rails有现成的标准指导,它的入门门槛相对高很多,通常会把一些缺少经验的开发人员挡在门外。

事实上,PHP应用程序是可以向其它种语言那样写的很好,而且还会具有一定的运行速度上的优势。PHP世界里的MVC风格的开发方法兴起只是在近几年才出现的现象。不得不承认,我们应该感谢Rails带来的这种变化。

那么,PHP如今是个什么样呢?

  1. 各种标准(非统一,但大多数项目使用MVC,很少有垃圾般的过程式程序)
  2. 很低的入门门槛
  3. 速度和可扩展性(在各种脚本语言里PHP应该是最好的)
  4. 有一个好的单元测试框架
  5. 有最好的各国语言翻译的文档

除此之外,互联网上大多数有影响的网站都使用PHP作为它们后台的语言或工具,诸如Facebook,Digg,维基百科,Wordpress,Drupal等等。我相信,对PHP有一个深入的掌握会使一个程序员打开更多的未知领域的大门。

如果你不赞同上面所说的,请留下评论,或email给我――我想听听你为什么不这么认为。

事实上,我并不是一个PHP迷,我对语言没有感觉。我使用PHP大多是因为――你猜到了――有人愿意付钱给我。所以一切归咎于此:

如果你希望在软件设计上做出明智的决定,PHP是你开发web应用程序的最佳选择。

顺便说一下,如果你确信要使用PHP来开发下一个web应用,请试一试CodeIgniter 。它是一个轻量级的,普通的,超级快的PHP框架。对于CodeIgniter,我是个粉丝。

?

:)

1 楼 zjshan 2011-05-13  
 为何说PHP是个集中营

2 楼 lvhjean 2011-05-13  
 为何说PHP是个集中营 不错。
我也喜欢CodeIgniter,目前正在学习。

3 楼 Tyler_Long 2011-05-14  
php用过symfony这个框架. 可以说这个框架知名度并不比codigniter和zend小. 但是整个过程中我饱受痛苦煎熬. 感觉很混乱,写出来的代码过几天就看不明白了. 两个月我就折腾了一个小项目, 比一个简单的博客程序复杂不了多少.

感觉一个语言的劣势,光靠框架是难以弥补的. 所以现在非常坚定地追随python和c#. 二者都非常牛叉优雅,并且几乎可以用在不同的场合. IronPython和C#可以互相调用! 当我知道这一点的时候, 兴奋之情难以言表. 你说,c#和python合璧, 有啥项目做不出来? 还有啥项目是难做的?

所以说啊, php框架的粉丝们,苦海无涯,回头是岸... 有比php更好的东西,并且多着呢.

4 楼 cherrycmd 2011-05-15  
php的项目很难维护

5 楼 smartfish9 2011-05-15  
Tyler_Long 写道
php用过symfony这个框架. 可以说这个框架知名度并不比codigniter和zend小. 但是整个过程中我饱受痛苦煎熬. 感觉很混乱,写出来的代码过几天就看不明白了. 两个月我就折腾了一个小项目, 比一个简单的博客程序复杂不了多少.

感觉一个语言的劣势,光靠框架是难以弥补的. 所以现在非常坚定地追随python和c#. 二者都非常牛叉优雅,并且几乎可以用在不同的场合. IronPython和C#可以互相调用! 当我知道这一点的时候, 兴奋之情难以言表. 你说,c#和python合璧, 有啥项目做不出来? 还有啥项目是难做的?

所以说啊, php框架的粉丝们,苦海无涯,回头是岸... 有比php更好的东西,并且多着呢.
symfony框架很不怎么样。现在的框架我感觉还是yii不错,codeigniter没用过,但与yii相比,速度挺慢的,zendframework速度更慢,且过度设计了,严重不推荐。我熟悉python,以及django,感觉做网站还是php好,当然首先要选一个好框架,并花点时间学会它。

6 楼 xieye 2011-05-17  
用zend好多年,zend的特点就是,如果你对其中一个包不满意,不用就是了。可以只挑选自己爱用的。

7 楼 bardo 2011-06-06  
不能完全同意博主的观点。主要在于对框架的认同。PHP没有好的框架。Zend,我在本网站已作了批判。至于CodeIgniter,充其量只是一个玩具。它能做的仅不过是一个小的企业网站,并且,安全,可扩展性等存在相当大的问题,包括,在其基础上重写的KOHANA也一样。
PHP目前最大的悲哀就是没有好的框架。有一些有标准的东西。比如:log4php,那是抄的JAVA的。CAKE,那是抄的ROR的。可悲的是抄的人,根不并不精通PHP。所以,也是垃圾。
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
php怎么把负数转为正整数php怎么把负数转为正整数Apr 19, 2022 pm 08:59 PM

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

php怎么实现几秒后执行一个函数php怎么实现几秒后执行一个函数Apr 24, 2022 pm 01:12 PM

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php怎么除以100保留两位小数php怎么除以100保留两位小数Apr 22, 2022 pm 06:23 PM

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

php怎么根据年月日判断是一年的第几天php怎么根据年月日判断是一年的第几天Apr 22, 2022 pm 05:02 PM

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php怎么替换nbsp空格符php怎么替换nbsp空格符Apr 24, 2022 pm 02:55 PM

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\&nbsp\;||\xc2\xa0)/","其他字符",$str)”语句。

php怎么判断有没有小数点php怎么判断有没有小数点Apr 20, 2022 pm 08:12 PM

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

php字符串有没有下标php字符串有没有下标Apr 24, 2022 am 11:49 AM

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php怎么读取字符串后几个字符php怎么读取字符串后几个字符Apr 22, 2022 pm 08:31 PM

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境