对于 PHP 框架,我们真的需要使用 LTS 版本吗?

唯一丶 -
对于 PHP 框架,我们真的需要使用 LTS 版本吗?
封面图片源自:pexels.com前言

最近随着 Laravel 9 的发布,有人发现了一个有趣的事情,那就是 Laravel 9 最初开发时是作为 LTS 版本发布的,来接替 Laravel 6,在正式发布时也是以 LTS 版本发布,而在正式发布后不久,Laravel 的官方文档中却将 Laravel 9 的 LTS 字样进行了移除,使得 Laravel 9 变成了一个「普通版本」。

对于普通版本,Laravel 提供了 18 个月的错误修正与 2 年的安全性更新。而对于长期支持版本,则提供了 2 年的错误修正,与 3 年的安全性更新。

在做事情的过程中,我们总怕出现问题,在做完一件事情之后,我们也常说「如果它能用,就不要去轻易的改动它」,这句话在过去适用,在未来一样也适用,这是前辈人总结换来的经验。只要不做事,就不会出错

而随着时代的演变,软件的迭代速度之快,有些软件两年一个大版本,有的甚至一年一个大版本,而其的支持周期一般也就两三年,如果你的业务能够在生存下去,可能过了两三年,你所使用的版本就与最新的差了好几个大版本了,而且可能你使用的版本已经被官方停止了支持,这时候如果你不升级你所使用的版本,就有可能让你的业务暴露在危险中。

什么是 LTS ,它有什么优势?长期支持 (英语:Long-term support,缩写:LTS)是一种软件的产品生命周期政策,特别是开源软件,它增加了软件开发过程及软件版本周期的可靠度。长期支持延长了软件维护的周期;它也改变了软件更新(补丁)的类型及频率以降低风险、费用及软件部署的中断时间,同时提升了软件的可靠性。

以上是摘自 Wikipedia 关于 LTS 的描述,可以看出来, LTS 相较于前面我们讨论到的问题似乎有了一个有效的解决方案,那就是我们当初在立项的时候,就直接选择 LTS 版本。LTS 相较于普通版本,降低了更新频率,也延长了支持时间。这样,我们就可以保证我们的项目使用的框架或者库有足够长的支持(功能、安全)时间,从而降低安全风险,以及维护成本。

LTS 的劣势

LTS 的支持,都是取决于软件厂商的支持力度,有的可能支持 2 年,有的可能 3 年,有的可能 5 年。

另外这段漫长的支持时间里面,软件的普通版本可能已经增加了好几个版本,引入了很多新特性,而你,可能都会与这些新特性无缘。

这还算不上最麻烦,麻烦的事情还在后面。

如果放在以前,你问我「在新开项目的时候,你会选择 LTS 版本,还是最新版本?」我一定会毫不犹豫的「选择 LTS 版本」,因为没有公司能够拒绝「稳定」这一利好因素,毕竟公司大多数时候都会准求稳定为主。

但是如果放到现在,我会告诉你「我会选择当前较新的稳定版本」,当你的业务可以一直被支持下去的时候,两年,三年,五年,甚至更长,这种与主版本脱节的落差就会越来越大,一次性升级的风险也就越来越大,你也就愈加不敢轻易升级,可能会从而导致你所使用版本永远定格在了那里。

以 Laravel 为例,一旦你有了首选 LTS 的想法,如果你在 2015 年创建项目的时候选择了 Laravel 5.1 LTS,那么在两年后的 2017 年, Laravel LTS 版本迎来了 5.5 版本的更新。这时候,你中间就差了 5.2、5.3、5.4 三个版本的跨度,虽然这三个版本的升级指南中的内容中都并不算多,除了框架本身,你还要兼顾框架依赖部分库,甚至你可能还要照顾你的 PHP 版本等等。

另外,值得注意的是 PHP 的每个版本积极支持时间也只有 2 年,外加 1 年的安全更新。

同时,因为如此大的跨度的可能带来的风险,你的 Leader 或许并不能同意你的升级,后面或许会更加的麻烦。

这其中有一点就不得不提的是,虽然 Laravel 提供了 LTS 版本,但是 Laravel 所使用到的依赖,这些大部分并没有提供 LTS 的选项,这也让其的 LTS 版本失去了一定意义。

说回 Laravel 9

Laravel 9 的目标 PHP 版本是 >=8.0.2,即也包含了 8.1,比如 Eloquent 的枚举转换

枚举 是 PHP 8.1 中引入的一个新语法特性,可以查看 PHP 手册中关于 枚举的介绍。

在 Laravel 9 发布之后的次日,Laravel 依赖的 Symfony ,提出了一个有关 PHP 8.0 的类预加载的 问题的讨论。

讨论中提议,在 Symfony 下一个版本,也就是 6.1 中,将 Symfony 的 PHP 最低版本要求提高到 8.1,在此之前 Symfony 的次要版本更新都是不会提高 PHP 最低版本的要求的。

目前根据 Laravel 开发者 Taylor Otwell 的消息,最坏的情况下 Laravel 9 也将提供至少 2 年的安全性更新(即普通版本的支持)。

依据 laravel/framework 的 composer.json 声明来看,在 Laravel 的下一个大版本中,Laravel 10 将依赖于 Symfony 6.1 部分组件,同时也意味着,Laravel 10 的 PHP 最低版本要求将被提高到 8.1。

结语

同时,Taylor Otwell 也在 Twitter 上表示:「鼓励每个人始终尝试使用最新的 Laravel

image-20220306132441238.png

目前 Symfony 关于那个问题的讨论现已关闭,且已确认 Symfony 6.1 将会将最低 PHP 版本限制提高到 8.1

对此,在 PHP 框架及 PHP 版本的选择方面,我个人仍然认为:为了避免在后期因为较大版本的跨度带来的问题,我们应该及时使用和更新到较新的版本,而非逃避式的去使用 LTS 版本,从而在以后造成一些 “历史遗留问题”

文章仅为个人关掉表述。如果你有好的建议与意见,不妨互相探讨如果文中的内容侵犯到了你得权益,请与我联系处理。你还可以点击文章中的来源链接和文章底部的参考链接,了解更详细的内容。参考Laravel LTS is a Trap. With the release of Laravel 5.1 also… | by Jason McCreary | MediumLaravel 9 is not LTS anymore. Why? : laravelBump minimum version of PHP to 8.1 by nicolas-grekas · Pull Request #45377 · symfony/symfony (github.com)
特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。

php介绍

PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。

Tags 标签

phplaravel

扩展阅读

加个好友,技术交流

1628738909466805.jpg