咱们来开门见山地说,PHP是一门奇葩的言语。它既不快,语法又不美丽。还没有遵守杰出的软件开发实践。但我仍是运用它开发了许多软件。那么问题就很明显了为什么今日还在运用PHP?
除了个人理想主义的偏好以外,还有许多理由。这才是咱们要评论的规模。为什么选PHP作为我的Web开发言语?
PHP是什么?
「PHP代表什么意思?」或许这么问,「PHP是什么?」PHP是一门编写web页面的言语,底层运用C言语完成,运用HTML的标签语法包裹代码。PHP一般跑在服务端,与web服务器配合工作,担任把HTML加工完回来给访问者。
PHP开始的意思是「PersonalHomePage」。由于这彻底约束了运用该言语进行一般运用的意义和可取性,所以该言语现在代表「PHP:HypertextPreprocessor」。这种写法被称为递归缩写(一种全称中引证自己的缩写)。极客们都喜欢用这种名字。
PHP能做什么?
PHP能用来做什么?一般来说PHP能做任何你想在web服务器上完成的东西。比如说做一个博客。完成一个SAAS运用也彻底不在话下。写一个暂时处理数据的脚本也是称心如意。又或许写了一个复杂的脚本,某一天突然变成了一门成功的软件业务?曩昔也常常发作。
假如你不相信我,能够看下PHP官网列出运用场景:
服务端脚本
命令行脚本
编写桌面运用
我不太鼓舞最终一项,但它的确可行。可是前两项的确是很棒的理由。
这就引出了一个重要且无法回避的现实…
PHP无所不在
了解和喜欢PHP的理由有十分多,可能最给力和有效的理由是:它能够在网络的任何当地运用和运转。假如你仔细寻觅,你买到每月最低3美元的托管账户可能能够运转Python或Ruby的Web运用程序。但它肯定能运转PHP。这意味着无论什么时候你都能够依赖PHP。
由于PHP能够运转在任何当地,而且它容易上手,许多十分受欢迎的软件都是用PHP写的。WordPress是对我影响最大和最了解的比如,除此之外,像Joomla,Drupal,Magento,ExpressionEngine,vBulletin(是的,它依然存在),MediaWiki等这些东西,它们都在服务器上运转PHP。
不仅如此,PHP运用结构更是多得数不胜数,比如:Symfony,Zend,Laravel,Aura,CakePHP,Yii乃至是古老的CodeIgnitor结构。当然你能够为其它任何一门言语制作一些长度相当的Web结构列表。比如常用的Web言语像Python,Ruby,或Node/JavaScript,你乃至能够堆集一个数字竞争列表来跟PHP比较。但运转PHP的网站数量庞大到无法估量。
WordPress自豪地声称在互联网上有30%的用户量。你乃至不需求相信这个说法就会意识到许多的互联网运用有必要运用PHP即使这个说法乃至能够想象成是真的。
PHP的长处
动态化特色
PHP和HTML能够十分融洽地工作在一起。将file.html修改为file.php,即可在标签里编写PHP代码,而且大部分的Web服务器默许装备便是能够直接运转PHP脚本。正由于其门槛十分低,不需求懂太多编程常识的菜鸟程序员也能够直接上手操作,以至于产生了许多低品质的代码。
由于其易学性,许多的菜鸟程序员涌入,露出出来另一个PHP一直被人诟病的问题:PHP并没有对自己是最好的Web服务器端言语有清晰的远景,当然也没为此做过太好的规划。导致走向了另一个结果,来自全球各地松散的合作,大杂烩般地贡献代码和主意,难以避免地,有一些坏的主意进入其中。
具有强壮的面向对象包办理是现在PHP中的一种规范
Composer是PHP的加分项。
在PHP的开发中,常常会有一些奇葩的东西被发布出来。最著名的栗子当属PHP5.3(广泛的被视为PHP的第一个现代化版本)中引进goto声明。
类似的问题是在PHP生长过程中产生:面向对象开始是作为一个有缺陷和有约束的概念来完成的,规范库中充满了不一致的名称和参数排序,而且(举个近来备受重视的栗子)在PHP5.3中::操作符无法辨认时,解析器会抛出可读性很差的报错信息:语法错误(T_PAAMAYIM_NEKUDOTAYIM),假如不看文档,你能用英文来了解这个T_PAAMAYIM_NEKUDOTAYIM标示的意思吗?
可是现在,PHP现已彻底支持OOP。很少言语具有像PHP这样类似Java的OOP完成。别的,与Java不同的是,PHP有一个独自的并具有广泛支持的包办理器,叫作Composer。它十分的好用,而且不容忽视的一点是它能够方便地引证优质且维护杰出的库,具有很高的易用性。
PHP的高速开展
经过这些现实发现,PHP正在以风趣的方式开展着。它正逐渐成为像java相同功用完全的面向对象言语(更好或更糟糕),正在为函数式编程提供简略的抽象,这能够说是当时的抢手。而且,正在开展一套十分棒的东西,PHP喜欢Composer,并有充沛的理由—由于它在一些大型开源项目的协同工作上做出了值得赞扬的尽力.
当然,咱们不应该忘掉当时的抢手:PHP在PHP7系列版本中的开展取得了速度上的提升。这被广泛以为是由Facbook出现的HHVM引起的,在短时间内,存在HHVM的开展速度会破坏PHP社区的风险,但现实并非如此,相反,PHP的开展速度快得多,以至于人们几乎忘掉了HHVM的存在。
PHP有一个巨大的社区;它对新手友好。
假如你决定运用什么很酷的新技术,我以为常常得到很少重视的是与言语达成协议的方式。学习PHP是什么感觉?PHP教程很好找,质量一般也很好。
PHP盛行的一个缺陷是,你会从那些对东西不够了解的人那里找到一些不那么好的教学。或许从某人那里学到的“最佳实践”是十年前的。但总的来说,这很少见,我不以为它应该让你灰心。或许突然发现自己运用了几个月的最佳实践并不是最好的是很少见的,也不是一个大问题。
PHP与其他言语的比较
接下来咱们要比照下PHP与其他的言语,这些言语需满足以下要求:
开源:意味着你能够自在、免费地运用或许查看底层言语或许程序;运用于Web开发领域:不一定是专心于Web开发,可是在Web开发中有比较大的运用;高阶动态言语:具备动态言语的特性,大部分面向Web运用的言语兼具此特性;满足大的社区:有许多满足以上条件,可是只是在小规模运用的言语,咱们运用这最终一个条件将他们过滤掉。
为什么运用PHP?而不是JavaScript?
或许和PHP比较的最重要的言语是JavaScript。现代开发要求每个项目都至少会一点JavaScript来进行客户端开发和交互。凭借Node,这使得在服务器上运用JS变得相对简略。在服务器上和客户端“同构”运用相同的言语十分吸引人。
如同PHP,JavaScript是一个兼容并蓄但有时丑恶的言语,有许多的瑕疵和“圈套”,但JavaScript在曩昔十年变得十分快,所以他的状况是实在的。为什么挑选PHP而不是JavaScript?你已有专业常识或许在PHP运用库。否则,我以为JavaScript或许是个更好的挑选。
PHP比照动态服务器页面(.NetCore)
动态服务器言语起源于一个用于网友编程的Microsoft言语。他和PHP十分直接类似。但他运转在Windows服务器环境。这被ASP.net替代了。现在已被ASP.NETCore替代。后两者现在是PHP相同的开源言语。而我个人从没有在任何变体中写过一点ASP。
假如我运用且更喜欢Microsoft服务器的话,我会更喜欢ASP。其他状况,请给我PHP。两者社区的规模和巨细没有可比性。
我应该运用Ruby仍是PHP?
Ruby,特别是RubyonRails,在曩昔十年前十分受欢迎。Ruby依然是一个备受喜欢的言语,这在我看来他比PHP高雅。也便是说,他的社区较小。一起我认识到Ruby现已不再是”抢手言语”(被JavaScript替代了此人物)。Ruby的高雅,而且有满足多的人拿手运用,因而我不会避免他。但招聘已了解Ruby的人依旧比招聘PHP要难。(尽管我以为一般的Ruby开发者水平比相同的PHP开发者要高。)
PythonvsPHP:谁更好一些?
最终一种与PHP一对一比较起来有意义的是Python。Python的运用场景要更多,相对于专心于web开发的PHP来说(尤其是在数据统计与剖析上面)。而且人们遍及都觉得它是一种更为更安稳和高雅的言语。
就像Ruby和JavaScript相同,Python在服务器上运转要比PHP略微麻烦一点。可是它是一种十分完美的言语,而且比起PHP的运用更具多样化,我以为它是比PHP更盛行的言语之一,而且在其他方面(例如:各种第三方的库、专业技术常识的获取、招聘求职)都是相同的。
PHPvsGo言语?Scala言语?Java言语?等等
一开始曾说到过,许多言语在做比较时或多或少会有一些类似的当地。这里有许多的言语能够拿来做比照,因而简略的聊几个:
java十分受欢迎,而且效率很高。一般被用来搭建安卓运用程序,桌面运用程序,和web端运用。不过,它不是动态类型的,它有更好的性能确保,但很合适Web编程。
Go是Google支持的正在开展的一门新言语。它专心web服务。可是这块比较PHP仍是有些不足(更像C言语),它的履行速度很快,可是社区相对有限。
Scala是一种盛行的运转在内存区(Java兼容)的言语,也好像越来越受欢迎。它比PHP规划的更高雅,可是除此之外,好像没有更多了。
此外,我觉得这些剖析满足能够做出挑选了,可是你有更多的选项能够去考量,不过最终我的替代方案将会考虑PHP。
需求按需挑选编程言语
有了上面的比较,为什么还要运用PHP?上文我现已提过了一些PHP里坏的规划,有一些我常常性会阅历,例如在『查找类型的函数』里,这些函数needle和haystack顺序不一致,在没有代码补全的环境下,我仍是会掉坑里。
假如你在构建一个全新的Web项目,而且此项目不需求与其他系统交互,而且只有你一个人在工作,你想试试看其他言语,类似Python什么的。可是,你需求知道的是,即使是这样的一个项目,仍是有许多理由让你挑选PHP。
任何现代化的言语都能够让你构建一个WebApp。每一门言语都有他们不足之处,例如PHP便是这样的,PHP要求你清晰地了解其不足之处,然后才能决策是否要在项目里运用它。可是对于我来说,我依然会挑选PHP来构建我的Web项目,就如KeithAdams在其讲演里说到的:
PHP的开发效率真不是一般的高。
假如你有一个Python的团队,请运用Python。假如你有个合伙人了解Java,请运用Java来编写你的SaaS程序。言语,永久都不是最重要的。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。