根据 2017年5月的PHP状态,有53%的PHP开发者使用的是PHP 7.0 或 7.1,但只有10%的omposer packages需要PHP 7.0或更高。实际上,四分之一的包仍旧只需要PHP 5.3,该版本为少于1%的开发者所用。
Symfony Flex,创建和管理Symfony程序的全新方式,已然需要在你的开发机器上安装PHP 7.1才行。Symfony 4,2017年11月发布,将需要你在生产环境的服务器上安装PHP 7.1。其他人气PHP项目已经宣布类似计划,因此如果你不尽快升级到PHP 7,你钭无法安装这些极为重要的PHP项目的最新版本。
升级你的开发机通常是个简单的任务,但升级其他基础设施 (servers, tools, etc.) 一般需要更多资源。此处即是 Symfony Polyfills 针对PHP 7.0而能为你的程序代码所准备的。
一个polyfill(译注:无论是在js生态还是php生态中,都要适应不同的环境,包括js的浏览器环境,以及php的版本环境等。此时用了这个polyfill,其实就是腻子的意思,使墙面变平的东西。大家对这个单词直接意会即可,就是为了解决兼容问题的包,或者代码)是一个PHP 5.3的包,实现的是更高PHP版本的函数和功能等。例如,像是 boolval()
, array_column()
和 password_*()
这种函数,仅在PHP 5.5 或更高版本才能使用。然而,如果你安装了 Symfony Polyfill / Php55 这个包,你可以在你的PHP 5.3程序中使用它们:
1 2 | $ cd your-project/
$ composer require symfony/polyfill-php55 |
Symfony Polyfills检查一个函数是否存在于你的PHP版本中,如果不存在,它会以那个名字注册一个新的全局PHP函数。这意味着你可以在你的PHP 5.3程序中使用最新的PHP功能,而如果最终你升级到PHP 7了,则代码将能够使用(该版本)最新的PHP功能。
我们已经创建了PHP 5.4, 5.5, 5.6, 7.0 和 7.1 的polyfill,并且 你可以在任何PHP程序中使用它们,而不仅是在Symfony程序中。此外,我们还创建了用于人气PHP扩展的其他polyfills,以便你可以在没有安装那些扩展时也能使用其功能: APCu, Mbstring, Iconv, Intl ICU, Intl Grapheme, Intl Normalizer, 和 XML 等。
概括起来,你只有几个月的时间来把你的基础架构升级到PHP 7了,但是得益于Symfony Polyfills,你现在就可以在你的PHP 5.3程序中开启现代PHP功能了。