们来开门见山地说。 PHP 是一门奇葩的语言。它既不快,语法又不漂亮。尚未遵照良好的软件开发实践。 但我仍是使用它开发了不少软件。 那么问题就很明显了 为何今天还在使用 PHP ?php
除了我的理想主义的偏好之外,还有不少理由。这才是咱们要讨论的范围。为何选 PHP 做为个人 Web 开发语言?html
「PHP 表明什么意思?」 或者这么问,「PHP 是什么?」 PHP 是一门编写 web 页面的语言,底层使用 C 语言实现,使用 HTML 的标签语法包裹代码。PHP 一般跑在服务端,与 web 服务器配合工做,负责把 HTML 加工完返回给访问者。java
PHP 最初的意思是 「 Personal Home Page 」。由于这彻底限制了使用该语言进行通常使用的意义和可取性,因此该语言如今表明「 PHP:Hypertext Preprocessor」。这种写法被称为递归缩写(一种全称中引用本身的缩写)。 极客们都喜欢用这种名字。程序员
PHP 能用来作什么?一般来讲 PHP 能作任何你想在 web 服务器上实现的东西。 好比说作一个博客。实现一个 SAAS 应用也彻底不在话下。写一个临时处理数据的脚本也是驾轻就熟。又或者写了一个复杂的脚本,某一天忽然变成了一门成功的软件业务?过去也常常发生。web
我不太鼓励最后一项,但它确实可行。可是前两项确实是很棒的理由 。编程
这就引出了一个重要且没法回避的事实...服务器
了解和喜好 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 即便这个说法甚至能够想象成是真的。
[![file]
PHP 和 HTML 能够很是融洽地工做在一块儿。将file.html
修改成 file.php
,便可在 <?php
和 ?>
标签里编写 PHP 代码,而且大部分的 Web 服务器默认配置就是能够直接运行 PHP 脚本。正由于其门槛很是低,不须要懂太多编程知识的菜鸟程序员也能够直接上手操做,以致于产生了不少低品质的代码。
由于其易学性,大量的菜鸟程序员涌入,暴露出来另外一个 PHP 一直被人诟病的问题:PHP 并无对本身是最好的 Web 服务器端语言有清晰的远景,固然也没为此作过太好的设计。致使走向了另外一个结果,来自全球各地松散的合做,大杂烩般地贡献代码和想法,难以免地,有一些坏的想法渗入其中。
[![file]
Composer 是 PHP 的加分项。
在 PHP 的开发中,常常会有一些奇葩的东西被发布出来。最著名的栗子当属 PHP 5.3 (普遍的被视为 PHP 的第一个现代化版本 )中引入
相似的问题是在 PHP 成长过程当中产生:面向对象最初是做为一个有缺陷和有限制的概念来实现的,标准库中充满了不一致的名称和参数排序,而且(举个近来备受关注的栗子)在 PHP 5.3 中::
操做符没法识别时,解析器会抛出可读性不好的报错信息:语法错误 (T_PAAMAYIM_NEKUDOTAYIM)
,若是不看文档,你能用英文来理解这个T_PAAMAYIM_NEKUDOTAYIM
标示的意思吗?
可是如今,PHP 已经彻底支持 OOP。不多语言具备像 PHP 这样相似 Java 的 OOP 实现。另外,与 Java 不一样的是,PHP 有一个单独的并拥有普遍支持的包管理器,叫做 Composer。它很是的好用,而且不容忽视的一点是它能够方便地引用优质且维护良好的库,具备很高的易用性。
经过这些事实发现, PHP 正在以有趣的方式发展着。它正逐渐成为像 java 同样功能齐全的面向对象语言 (更好或更糟糕),正在为函数式编程提供简单的抽象,这能够说是当前的热点。而且,正在发展一套很是棒的工具, PHP 喜欢并有充分的理由
固然,咱们不该该忘记当前的热点:PHP 在 PHP7 系列版本中的发展取得了速度上的提高。这被普遍认为是由 Facbook 出现的HHVM 引发的,在短期内,存在 HHVM 的发展速度会破坏 PHP 社区的风险,但事实并不是如此,相反,PHP 的发展速度快得多,以致于人们几乎忘记了 HHVM 的存在。
若是你决定使用什么很酷的新技术,我认为常常获得不多关注的是与语言达成协议的方式。学习 PHP 是什么感受? PHP 教程很好找,质量一般也很好。
PHP 流行的一个缺点是,你会从那些对工具不够了解的人那里找到一些不那么好的教学。或者从某人那里学到的 “最佳实践” 是十年前的。但总的来讲,这不多见,我不认为它应该让你灰心。或者忽然发现本身使用了几个月的最佳实践并非最好的是不多见的,也不是一个大问题。
接下来咱们要对比下 PHP 与其余的语言,这些语言需知足如下要求:
也许和 PHP 比较的最重要的语言是 JavaScript。现代开发要求每一个项目都至少会一点 JavaScript 来进行客户端开发和交互。借助 Node,这使得在服务器上使用 JS 变得相对简单。在服务器上和客户端 “同构” 使用相同的语言很是吸引人。
如同 PHP,JavaScript 是一个兼容并蓄但有时丑陋的语言,有不少的瑕疵和 “陷阱”,但 JavaScript 在过去十年变得很是快,因此他的状况是真实的。为何选择 PHP 而不是 JavaScript?你已有专业知识或者在 PHP 使用库。不然,我认为 JavaScript 或许是个更好的选择。
动态服务器语言起源于一个用于网友编程的 Microsoft 语言。他和 PHP 很是直接类似。但他运行在 Windows 服务器环境。这被 ASP.net 取代了。如今已被 ASP.NET Core 取代。后二者如今是 PHP 同样的开源语言。而我我的从没有在任何变体中写过一点 ASP。
若是我使用且更喜欢 Microsoft 服务器的话,我会更喜欢 ASP。其余状况,请给我 PHP。二者社区的规模和大小没有可比性。
Ruby,特别是 Ruby on Rails,在过去十年前 _很是_ 受欢迎。Ruby 依然是一个备受喜好的语言,这在我看来他比 PHP 优雅。也就是说,他的社区较小。同时我认识到 Ruby 已经再也不是 "热门语言"(被 JavaScript 取代了此角色)。Ruby 的优雅,而且有足够多的人擅长使用,所以我不会避免他。但招聘已熟悉 Ruby 的人依旧比招聘 PHP 要难。(虽然我认为通常的 Ruby 开发者水平比相同的 PHP 开发者要高。)
最后一种与 PHP 一对一比较起来有意义的是 Python 。 Python 的使用场景要更多,相对于专一于 web 开发的 PHP 来讲(尤为是在数据统计与分析上面)。并且人们广泛都以为它是一种更为更稳定和优雅的语言。
[
就像 Ruby 和 JavaScript 同样, Python 在服务器上运行要比 PHP 稍微麻烦一点。可是它是一种很是完美的语言,并且比起 PHP 的使用更具多样化,我认为它是比 PHP 更流行的语言之一,并且在其余方面(例如:各类第三方的库、专业技术知识的获取、招聘求职)都是同样的。
一开始曾提到过,许多语言在作比较时或多或少会有一些类似的地方。这里有不少的语言能够拿来作对比,所以简单的聊几个:
此外,我以为这些分析足够能够作出选择了,可是你有更多的选项能够去考量,不过最后个人替代方案将会考虑 PHP。
有了上面的比较,为何还要使用 PHP ?上文我已经提过了一些 PHP 里坏的设计,有一些我常常性会经历,例如在『查找类型的函数』里,这些函数 needle 和 haystack 顺序不一致,在没有代码补全的环境下,我仍是会掉坑里。
若是你在构建一个全新的 Web 项目,而且此项目不须要与其余系统交互,而且只有你一我的在工做,你想试试看其余语言,相似 Python 什么的。可是,你须要知道的是,即便是这样的一个项目,仍是有不少理由让你选择 PHP。
任何现代化的语言均可以让你构建一个 Web App。每一门语言都有他们不足之处,例如 PHP 就是这样的,PHP 要求你清晰地了解其不足之处,而后才能决策是否要在项目里使用它。可是对于我来讲,我仍然会选择 PHP 来构建个人 Web 项目。
PHP 的开发效率真不是通常的高。