菜单

的前世今生,为什么开发者对PHP又爱又恨

2020年5月8日 - 前端排行

然而,就像任何语言,它也有支持者和反对者。下面解释了支持者声援PHP、和持不同意见者痛批它的原因。

PHP
现在正在经历着一场自己在编程语言中的文艺复兴。通过增加一系列新的特性(比如
namespaces,traits,closures,build-in opcode cache 等),PHP
逐渐演变成一个现代化的脚本语言。同时,PHP的整个生态系统也在因此而转变。PHP
程序员们不再过度依赖那些庞大而臃肿的框架,而是更多的去使用更加轻量级的专用组件。Composer
依赖管理工具也彻底改变了人们构建 PHP
应用的方式;它将我们从那些框架的围墙中解脱出来,让我们可以自由混搭各种可相互操作的组件,从而搭建出最能符合我们需求的
PHP 应用。当然,如果没有 PHP Framework Interop Group
负责提出与优化的各种标准,那么这些组件之间的互操作性也是几乎不可能实现的。

好的:继续在发展

这门语言自诩有闭包和命名空间之类的现代功能,还有性能和现代框架。正如Gutmans所指出的,“一些想离开的人在PHP能提供什么上面所受到的必要教育不多。”Lockhart说,开发者正在意识到,PHP有着强大的现代特性以及合适的面向对象编程模型。即将到来的版本7,在应用程序上提供了巨大的性能提升。Lockhart指出,Facebook对PHP的增强,包含了HHVM虚拟机和Hack语言【注2】。

PHP 的现在

现在,PHP
语言正在来自世界范围的许多开发团队的支持下快速发展。整个开发的流程也有了一些变化。在过去,一般的开发过程就是先写好
PHP
代码,将文件上传到服务器,然后开始祈祷一切都能正常运行。这是一个很不好的开发流程,但是,在没有可用的本地开发环境的情况下,也只能不得已而为之。

现在的开发流程使用版本控制工具取代了过去那种FTP的方式。使用 Git
这样的版本控制工具可以维护一个具有历史记录的代码库,你也可以很容易的创建新的代码分支或者合并不同的代码分支。使用
Vagrant 这样的虚拟化工具和 Ansible,Chef 或者 Puppet
这样的自动配置工具可以虚拟出跟生产环境一致的本地开发环境。通过 Composer
依赖管理工具我们可以利用专用的 PHP 组件。我们的 PHP 代码遵循 PSRs - 由
PHP Framework Interop Group 管理的社区标准。我们可以利用 PHPUnit
这样的工具彻底的测试我们的代码。我们将代码部署在运行于像 nginx 这样的
Web 服务器之后的 PHP FastCGI 进程管理器中。我们也可以通过 opcode
缓存来提升应用的执行效率。

同时值得一提的是,直到2014年,PHP 终于有了一份官方的语言规范草案。

Sara Golemon 和 Facebook 在 O‘Reilly 的 2014 OSCON 会议上宣布了第一份
PHP 规范草案。你可以在 PHP internals mailing list
中查看这份官方声明,也可以在 Github 上查看 PHP
语言规范。

由于有多个 PHP 引擎的竞争,使得官方的 PHP
语言规范文件就显得非常重要。最初的 PHP 引擎是 Zend Engine,它是用 C
语言写的一个 PHP 解释器,并从 PHP4 开始使用。Zend Engine 是由 Rasmus
Lerdorf,Andi Gutmans 和 Zeev Suraski 创建的,它也是 Zend 公司对 PHP
社区的主要贡献。不过,现在有了第二个主要的 PHP 引擎 - 由 Facebook
开发的 HipHop Virtual Machine。所以官方的 PHP
语言规范保证了这两个引擎之间基本的兼容性。

好的:好找工作

“PHP帮助你赚钱、找到一份在服务器端的工作”,Gutmans说。在上周的Dice.com技术工作网站上的快速研究,找到了3,366份PHP相关的工作。与17,418份Java工作相比显得很平淡,紧追Perl(4,300)和Python(5,429),但是高于Ruby(2,973),甚至包括Objective-C(985)。Lockhart把PHP看做使用频率最高的语言之一,尽管它和Ruby、Python、Go和Rust之类的语言比起来,有些保守。

PHP 的过去

在开始学习现代 PHP 之前,我们应该先了解一下 PHP 的起源。PHP
是一种服务器端的解释型脚本语言。也就是说你写好了 PHP
代码,要将它上传到服务器上,然后通过 PHP 解释器来执行你的代码。PHP
通常被用于像 Apache 或者 Nginx 这样的 Web
服务器来提供动态的内容。当然,PHP 也可以被用来创建强大的命令行程序(就像
bash,Ruby,Python等等)。许多 PHP
程序员由于不了解这一点而错过了好多让人激动的功能。当然,这些程序员不包括你在内。:)

你可以通过官方网页来了解
PHP 的历史。在这里我不打算再重复已经被 Rasmus Lerdorf(PHP
之父)说过的话。我想说的是 PHP 有一个混乱的过去。PHP 最初是由 Rasmus
Lerdorf 写的一套简单的 CGI 脚本,用来跟踪访问他主页的人们的信息。Lerdorf
给他的这套脚本命名为 “个人主页工具集”(Personal Home Page
Tools)。这套代码跟我们现在所说的 PHP
完全不同,甚至根本不能算是一种脚本语言,而只是一个简单的工具,可以提供一些简单的变量,自动解释表单变量,并可以嵌入
HTML。

在1994年到1998年之间,PHP
经历了数不清的改进,甚至还有好几次完全推倒重写。Andi Gutmans 和 Zeev
Suraski,两位当时还是 Tel Aviv 公司的程序员,也加入了 Rasmus Lerdorf
的队伍,逐渐将 PHP 从一套简单的 CGI 工具转变成一个完整的编程语言,让 PHP
有了比较统一的语法和简单的面向对象支持。他们将最终的产品命名为 PHP3,
并在1998年下半年正式发布。这个新的命名跟之前的名字没有什么联系,而是
“PHP:Hypertext Preprocessor” 的递归缩写形式。PHP3
是第一个长的有点像我们现在所说的 PHP
的版本。它对各种数据库,协议和API有着卓越的可扩展性。PHP3
的这种可扩展性吸引了更多的开发者加入到这个项目中来。到1998年底,PHP
已经在全世界的 Web 服务器中占有了 10% 的份额。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图