Heim >php教程 >php手册 >2012 PHP 世界年度回顾

2012 PHP 世界年度回顾

WBOY
WBOYOriginal
2016-06-06 20:08:131153Durchsuche

一年又一年,让我们来回顾一下过去的一年中PHP世界发生了哪些事,做出新一年的展望,顺便检验一下去年的预测实现了多少吧。 译者按:最近的工作一直在跟PHP打交道,于是翻译这篇文章以增加对PHP的社区的了解吧。原文在此(2012: A Year in PHP)。 框架趋同

一年又一年,让我们来回顾一下过去的一年中PHP世界发生了哪些事,做出新一年的展望,顺便检验一下去年的预测实现了多少吧。

译者按:最近的工作一直在跟PHP打交道,于是翻译这篇文章以增加对PHP的社区的了解吧。原文在此(2012: A Year in PHP)。

框架趋同

在2011年,我们说过许多框架将在基本功能上渐渐趋同,使用相似的策略。例如,PSR-0 标准定义了一个统一的自动加载机制,同时2012年三月发布的 Composer 将这一标准迅速推广到了大多数主流框架中。六月发布的 Symfony 2.1.0 便将 Composer 作为依赖管理的解决方案,紧接着,于九月发布的 Zend Framework 2.0 也使用了 Composer 的自动加载和依赖管理功能。

三月,Drupal 项目宣布它们平台的第八个版本(目前推迟到2013年中发布)将会完全在 Symfony 组件的基础上重写。这是一个令人振奋的消息,在各种会议和其他社区活动中,Symfony 和 Drupal 社区将会紧密地联系在一起。

有迹象表明,许多项目开始在同一个方向上发展,这甚至包含框架级别的产品。当然,选择还是存在的:Zend Framework 2 还是 Symfony 2?我觉得我们预言的没错!

依赖注入容器(Dependency Injection Containers)

在我们去年做出预测的时候,Symfony 2 尚未启动,而 Zend Framework 2 刚发布 Alpha 版。我们在2012年看到了这两个明星项目的进一步发展,并且 DIC (Dependency Injection Containers) 也成为了年内各种会议的热门话题。这种机制能够创建可测试、可重用的代码,成为了优秀 PHP 程序的最佳实践。

严肃对待缓存

我们说过,在2012年,大型企业和组织将借助他们的高流量 Web 应用开始对开源项目施加缓存方面的影响。在2012年启动的项目,几乎所有都从一开始就包含了Varnish层支持来应付客户的高性能要求。同时 Edge Side Includes (ESI) 也在新的应用程序中被更多地使用。缓存代理——例如 Varnish 就是其一——已经成为平台的核心。

我们成功预言,缓存已经成为2012年非常热门的一个话题,并且这将在2013年持续。仅2012年一年,Varnish 的使用就增加了39%。

趋势

Composer

2012年,会议上被讨论最多的话题便是 Composer。我们已经在前文中对它给予了很高的评价,但是如果要给 PHP 社区过去一年的变化排一个前十名的话,它肯定是第一。这不仅仅是因为 Composer 在各种会议中被广泛讨论,还因为它在其他技术讨论中被反复提及。对 Composer 的支持已经成为了 PHP 开源项目中开发者引以为豪的特性——况且这的确值得骄傲!这已经成为人们对所有 PHP 库的期待,在GitHub上,为了支持它而提交 Pull Request 已蔚然成风。

最佳实践

这是 PHP 用户和其他语言用户间的老生常谈了。我们对 PHP 植根于服务端模板编程感到自豪,不过这种语言已经在某些方面进化到跟过去完全不同。正因为 PHP 独有的发展历史,PHP 手册也主要关注如何快速实现,而非最佳实践。但是在2012年,我们看到了一则极其有价值的开发指引:PHP 之道(中文翻译参考)。这是有关于 PHP 开发的“最佳实践、编码规范和网络上的权威学习指南”,强烈建议所有人阅读。最近在 PHP 官网手册上增加的评论投票功能也被寄予提升优秀信息、取代陈旧内容的厚望。这些对于我们来说是百利而无一害的。

PHP5.4, PHP5.5, PHP5.2 and PHP5.3 (注意顺序…)

PHP 5.4 稳定版于三月推出,如今已经发布了10个维护更新,截止本文写作时已经是 5.4.10 了。

在2012年尾,我们还看到了 PHP 5.5 的第一个 Alpha 版,这将是 PHP 5 的下一个主要更新。它会带来例如生成器(Generators,在函数中使用 yield 关键词实现简单遍历。译注:关于生成器及其在 Python 中的应用,可以参考我之前的一篇文章)、finally 关键词(try, catch, finally)、全新设计的密码 Hashing API,还有许多其他语言核心的提升。需要指出的是,目前版本还是 Alpha 所以新特性或废除特性可能会随时改变。

W3Techs 的使用统计表明 PHP 5.2 仍然是最流行的 PHP 版本,有 52.1% 的 PHP 应用部署了这一版本。然而这已经是2010年的技术了,使用这一版本 PHP 开发的应用应当立即升级到 5.3。

PHP 5.3 是占据了第二名的位置,为 42.9%。PHP 官方声明 5.3 本本将在 2013 年三月结束生命周期,用户应当升级到 5.4 版本。因此现有的 5.2 用户需要跳跃两个版本来更新,这可能会成为一个难题。此外还有小部分站点停留在 PHP 4 和 PHP 5.1 上,不过我们不会再理会他们了……

PHP 闭包

在 PHP 5.3 带来闭包特性前我们是怎样编码的?自从PHP代码可以直接在写在诸如 array_map() 的核心函数中后,我们看到了像 Silex 这样的框架开始流行。在 Symfony2 组件基础上,我们利用允许闭包的编码风格,可以写出更好的 PHP 代码。

不妨来看看 Pimple 项目的代码是多么的丑陋,但是一旦有了支持闭包的 PHP 呢?

2013 年的预测

终于到了我们要尝试预测 PHP 大陆在 2013 年会有哪些新发展的时候了。

框架趋同……更加地

我们在去年预测过,事实上有些的确实现了。我们认为 2013 年在框架间会有更多的共享模块,依赖已定义好的接口。这将由框架核心(使用通用的方法来做日志、鉴权等等)来实现。只有在 Composer 和 Packagist(Composer 使用的包仓库)的基础上构建的项目才更有意义。

内容即服务(Content as a Service)

有一种现象越来越普遍,即客户要求我们提供创建内容并在不同站点和软件平台间共享这些内容。在目前,大多数主流 CMS 产品只能强制用户显示通过平台内建的模板系统创建出来的内容。我们认为在 2013 年我们将看到一种内容仓库的出现,它可以推送自己的内容到不同的地方——尤其是越来越普及的移动平台。

依赖注入容器 2.0

随着 DIC 越来越被框架接受,越来越多的人开始使用 DIC 解决代码中的依赖问题。然而这在不同的环境下也会导致误用,尤其是在库中。广大的社区会渐渐从经验中总结出最佳实践。依赖注入需要更多地在设计 OO 软件中考虑而不是仅仅停留在 DIC 阶段。

使用 PHPSpec 和 Behat 进行行为驱动开发

XUnit 风格的测试框架似乎已被社区淡忘,不过 Spec 框架和行为驱动开发(Behaviour Driven Development)将会在 2013 年兴起。PHPSpec 2 在2012年十月发布了首个 Alpha 版,作为测试框架的另一种选择,它给 PHP 社区带来了关于测试以及测试如何适应于开发的新鲜观点。这个简单框架的设计理念着眼于成为编写良好结构 OO 代码的助手,而不是提供一种验证代码正确性的机制。同 Behat 结合使用,PHP 已经具备了完整的 BDD 支持。我们预测 2013 年这一概念的接受度会广泛提升。

使用和误用 Traits

随着 PHP 5.3 在三月结束生命周期,框架和库的开发者将开始以 PHP 5.4 作为最低依赖需求。这带来了 Traits 特性。我们预测这会导致框架中大量代码被删除,因为多重平行继承允许(例如迭代器中的)许多原型代码(Boilerplate code)被移除,并使用 Traits 来替代。

这看上去的确是个不错的消息。不过权力越大,责任越大,这个语言特性很可能在使用的同时被滥用!不过社区总会很快地从错误中学习,这一年 Traits 将会涌现很多好的实践,同时承受坏的压力。

2013 年,PHP 和你

你对到来的这一年有何期待?有什么我们遗漏的内容吗?请在下面留言让我们知道——祝你的 PHP 好运!

编者

  • Ben Longden
  • Alistair Stead
  • 翻译:大眼夹 (http://dayanjia.com)
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn