在过去的一年里,我们投入了大量精力来构建下一代 Joomla,致力于 Joomla! 4.0 和 Joomla! Framework 2.0 版本的开发。除了引入一些新功能,包括完全重构的媒体管理器、增强的事件分发系统以及新的安全功能(例如支持预处理 SQL 语句),我们还进行了一些例行维护,并通过淘汰过时的代码和提高最低支持软件栈来解决项目的一些技术债务。在去年发表的宣言的更新中,今天我们宣布,下一代主要的 Joomla 版本将要求使用 PHP 7。
为什么是 PHP 7?
目前,PHP 7 是唯一一个完全受支持的 PHP 语言主要版本,而对 PHP 5 的支持即将结束(目前仅 5.6 接收安全更新,所有之前的版本不再受支持)。到 Joomla! 4 发布时,最旧的支持 PHP 版本将只剩下不到一年的安全支持。
从 Joomla! 3.x 的整个生命周期来看,其首个版本发布于 2012 年 9 月,在到达其支持结束日期之前,Joomla! 3.x 将至少获得 8 年的支持。假设 Joomla! 4 在 2018 年发布,并具有类似的生命周期,这意味着 Joomla! 4 可能在 2025 年之后很久才会停止支持。正如你所见,这是对软件进行支持的漫长时间,特别是对于主要用于构建和管理网站的软件而言。展望项目未来的支持需求,考虑到整个网络行业的发展趋势(包括 Joomla 正常运行所直接依赖的技术)以及使用我们现有的开发策略来指导我们,Joomla! 4.0 和 Joomla! Framework 2.0 的发布是我们重新评估相当一段时间内的支持软件版本的唯一机会。
适应 PHP 7
PHP 7 是 PHP 语言的一个重大版本,它要求大多数软件包和语言本身的扩展进行不同程度的更新。查看我们社区提供的使用统计数据,自该系统于 2016 年初启动以来,在所有提供数据的安装中,约有 17% 的网站报告运行的是 PHP 7 版本。这个数字可能看起来很低,但统计服务器包含来自所有曾经报告过信息的网站的数据,公开数据包括不再在线或选择不再发送数据的网站。因此,我们还分析了报告 Joomla! 3.7 版本的网站的使用数据,发现其中 42% 的网站运行的是 PHP 7 版本。我们注意到,在 2017 年期间,另一个有趣的趋势是运行 PHP 7 版本的网站数量增加,而运行 PHP 5.5 或更早版本的网站数量减少。利用这些数据,我们对社区中 PHP 7 的采用率感到满意,并且认为在下一代 Joomla 中要求使用 PHP 7 并非不合理的要求。
如果我无法升级怎么办?
需要记住的一件重要的事情是,Joomla! 3.9 是我们的最后一个计划发布的 3.x 版本,将在其发布后获得两年的支持。同样,对于 Joomla! Framework 用户,Framework 1.x 包将获得大致相同的时间范围内的支持(特别是由于 CMS 对许多 Framework 包有内置依赖性)。同样,假设 Joomla! 4.0 在 2018 年发布,这意味着你可以舒适地运行你的 Joomla! 3 网站,直到 2020 年。到 2020 年,升级将变得更加紧迫,因为不仅你的 Joomla 版本将不再受支持,而且运行 Joomla! 3 的大多数 PHP 版本也将不再受支持,许多服务器软件包和发行版也将不再受支持。
这对核心代码有什么影响?
随着 Joomla! 3 的最低 PHP 版本为 PHP 5.3.10,我们在逐步淘汰 PHP 5 支持时,可以在代码中进行许多功能和优化。其中许多更改可以在不影响现有公共 API 的情况下进行,但如果实施某些功能(例如,标量类型提示),如果被接受,将引入向后兼容性问题。因此,我们将根据 Joomla! 4.0、Joomla! Framework 2.0 以及新旧代码,调整以下策略
- 新主要版本中的所有新类和方法都可以使用 PHP 7 中的所有功能,包括标量类型提示和返回值声明
- 私有方法和最终类(根据定义,无法扩展)中的方法可以更新为使用 PHP 7 类型
- 现有类中的公共和受保护方法通常不会改变其方法签名,除非更改能够改善代码的理解和使用(例如,可以使用可变参数签名的那些方法)。
我们坚定地致力于使下一代 Joomla 成为最棒的一代,并相信展望未来,拥抱 PHP 7 将有助于为用户提供最优质的产品。