php语言正在经历一场文艺复兴。php正在演进为一种流行的脚本语言得益于一些有益的特性,例如命名空间,traits,闭包和基于opcode缓存原理。这个流行的php生态系统也在进化。php开发者较少依赖整体框架,更多的是小的专用组件。这个composer依赖管理者正在对怎样建立php应用进行彻底变革;它让我们从框架的围墙花园解脱出来并让我们混合共同操作php组件以更好的适应常见的php应用。组件互用不可能没有社区规范标准和被php框架合作团队策划。
modern php这本书是新php的指引,它将向你展示怎样建立和部署令人惊叹的php应用通过社区标准、好的实践、和混合组件。
过去
在我们探索modern php之前,首先必须理解php的起源。php是一种服务器端的解释脚本语言。这意味着你写php代码,上传到服务器并被解释器执行。php是一种典型的被用于网站服务器例如apache或nginx来获取动态内容。然而,php也可用于创建强大的命令行应用(正如bash、ruby、python等)。很多php开发者没有意识到这些并忽略了这个令人兴奋的特性。尽管不是你。
你可以阅读php官方历史文档在http://php.net/manual/history.php.php.我将不重复因为它已经被Rasmus Lerdorf(php创建者)很好的说明。我将告诉你的是php有一个喧嚣的过去。php初始于被Rasmus Lerdorf写作CGI脚本集合去追踪它的线上简历访问。Lerdorf称它的CGI脚本集合为‘个人主页工具’。它的前身完全不同于我们现在所知道的php。Lerdorf ’s的早期php工具并不是脚本语言;它最初是为基本的变量和使用HTML嵌入语法自动窗体的变量提供解释的工具。
在1994-1998,php历经多次修改甚至受到了一些彻底的重写。Andi Gutmans and Zeev Suraski两个开发者加入Rasmus Lerdorf去改造php使它从CGI工具的一个集合变成一个带有更一致的语法和基本支持面向对象变成的成熟编程语言。他们命名为php3并在1998年底发布。这个php外号从早期名字分离,它是Hypertext Preprocessor(超级文本预处理语言)的递归缩写。php3是最早并且最想我们所了解的php版本。它提供了优秀的对于各种数据库、协议和接口的可扩展性。php3的特性吸引了很多新的开发人员到这个项目中。截止到1998年底,php3已经被惊人的10%的世界网站服务器安装。
现在
如今,php语言在快速进化并被数以十计的来自世界各地的核心开发者维护。开发实践也被改变。在过去,它被共同实践去写php文件、用FTp上传到生产服务器,希望它运转。这是一种可怕的开发模式,但是它是必要的因为缺乏可行的本地开发环境。
现在,我们不用FTP而是被版本控制代替。版本控制软件如git帮助维持可被分支、分叉、合并的审查代码过程。本地开发环境因为有了虚拟机工具如Vagrant和供应工具如Ansible、Chef、Puppet.可以和生产服务器一样。我们用Composer依赖工具管理专业的php组件。我们的php代码被php框架合作团队用psr系列标准维护。我们彻底用工具如PHPUnit.来测试代码。我们用基于网站服务器的php的fasCGI进程管理工具来开发应用。我们通过opcode缓存来改善应用性能。
Modern PHP包含了很多你不熟悉或从旧版本升级而来的新实践。不要感到不堪重负。我将在后面带你走过每个概念。我也很兴奋在2014年有了官方规范草案。
大多数成熟的编程语言都有自己的规范。在雷曼体系中,规范是一个典型的定义php是什么的蓝图。这个蓝图被开发者用来创建、解释并执行代码。它不是为了那些用php创建应用和网站的。
2014年,Sara Golemon and Facebook宣布了第一个php规范草案在O’Reilly的OSCON会议上。你可以在php内部邮件列表里面看到这个官方声明,在github上面读到php规范。
由于多个php引擎的相互竞争,官方的php语言规范变得越来越重要。这个最初的php引擎是zend引擎,它用c语言编写了php解释器并引入了php4.这个zend引擎被Rasmus Lerdorf, Andi Gutmans, and Zeev Suraski创建。今天这个zend引擎是zend公司对php社区的主要贡献。然而,现在又有了第二个主要的php引擎-facebook公司的hiphop虚拟机。一个语言规范确保了这两个引擎都保持了一个基本的兼容性。
php引擎是一个分析、解释、执行的程序(例如zend引擎和facebook的hiphop虚拟机)。不要和php混淆,它是对php语言的基本参考。
未来
这个zend引擎通过新特性和性能的提升在迅速提升。我主要致力于zend引擎改善的竞争对手,特别是facebook的虚拟机和hack编程语言。
hack是一个新的基于php的高级编程语言。它引入了静态类型、新的数据结构和额外的对现有的动态类型的PHP代码保持向后兼容性的接口。hack是针对那些喜欢php的快速发展特性但需要从静态类型获取可预见性和稳定性的开发者。
我们将在后面讨论动态和静态特性。这两者的差异体现在当php类型被检查时。动态类型在运行时被检查,静态类型在编译时被检查。可以到第12章获取更多相关信息。
这是一个成为php编程人员兴奋的时代。php社区从来没有像现在这样充满活力、乐趣和创新。我希望这本书帮助你坚定的拥护-现代php实践。有很多新东西要学,更多的东西即将出现。考虑一下你的学习路线图。现在我们进入这本书。
注:初次翻译,请多多指教!