封面图片来自:pexels.com前言最近随着Laravel9的发布,有人发现了一个有趣的事情,那就是Laravel9在最初开发的时候作为LTS版本发布,以接替Laravel6,并且正式发布的时候也是作为LTS版本发布的,但是在正式发布后不久,Laravel9的LTS字样就从Laravel的官方文档中去掉了,使得Laravel9成为了一个“普通版”。对于常规版本,Laravel提供18个月的错误修复和2年的安全更新。对于长期支持版本,提供2年的错误修复和3年的安全更新。在做事的过程中,我们总是害怕出问题。做完一件事,我们常说“有用就不要轻易改”。这句话过去适用,将来也同样适用,这是前人总结出来的经验。只要什么都不做,就不会出错。随着时代的演进,软件的迭代速度越来越快。有些软件每两年有一个大版本,有的甚至每年都有一个大版本,其支持周期一般只有两三年,如果你的企业能活下来,也许两三年后,你用的版本会比最新版本落后好几个大版本,说不定你用的版本已经正式停止支持了,这个时候,如果你不升级您正在使用的版本,您就有可能将您的业务置于危险之中。什么是LTS,它有什么优势?长期支持(英文:Long-termsupport,缩写:LTS)是一种软件产品生命周期政策,尤其是开源软件,它增加了软件开发过程和软件版本周期的可靠性。长期支持延长软件维护周期;它还改变了软件更新(补丁)的类型和频率,以降低软件部署的风险、成本和停机时间,同时提高软件的可靠性。以上是维基百科对LTS的描述的节选。可以看出,相对于我们前面讨论的问题,LTS似乎有一个有效的解决方案,那就是我们在最初建立项目的时候,直接选择了LTS版本。与普通版本相比,LTS降低了更新频率并延长了支持时间。这样就可以保证我们项目使用的框架或者库有足够长的支持(功能、安全)时间,从而降低安全风险和维护成本。LTS的缺点LTS的支持依赖于软件厂商的支持。有的可以支持2年,有的可以支持3年,有的可以支持5年。另外,在这漫长的支持期内,可能会增加几个普通版软件的版本,推出很多新功能,您可能无法使用这些新功能。这还不是最麻烦的,麻烦的事情还在后面。如果你过去问我,“当你开始一个新项目时,你会选择LTS版本还是最新版本?”我肯定会毫不犹豫地“选择LTS版本”,因为没有公司可以拒绝“稳定”的概念。积极的因素,毕竟公司大部分时间会以稳为主。但是如果放到现在,我会告诉你“我会选择较新的稳定版”,到时候你的业务可以支撑到永远,两年,三年,五年,甚至更久,这种关系跟差距主版本之间会越来越大,一次性升级的风险会增加,你会更加害怕轻易升级,这可能会导致你使用的版本永远冻结在那里。以Laravel为例,一旦你产生了偏好LTS的想法,如果你在2015年创建项目时选择了Laravel5.1LTS,那么在两年后的2017年,LaravelLTS版本迎来了5.5版本的更新。.这时候你就缺少了5.2、5.3、5.4三个版本的跨度。虽然这三个版本的升级指南内容都不算多,但是除了框架本身,你还需要考虑到框架依赖于一些库。甚至您可能还需要注意您的PHP版本等等。此外,值得注意的是,每个版本的PHP也只有2年的有效支持,外加1年的安全更新。同时,因为这么大的跨度可能带来的风险,你的Leader可能不同意你的升级,以后可能会带来更多的麻烦。有一点不得不提的是,虽然Laravel提供了LTS版本,但是Laravel使用的大部分依赖并没有提供LTS选项,这也使得它的LTS版本失去了一些意义。说到Laravel9,Laravel9的目标PHP版本是>=8.0.2,其中还包括8.1。例如,Eloquent的枚举转换枚举是PHP8.1引入的新语法特性。你可以查看PHP手册介绍中的枚举。在Laravel9发布的第二天,Laravel所依赖的Symfony就引发了一场关于PHP8.0中类预加载的讨论。讨论中提出,在下一个版本的Symfony6.1中,Symfony的PHP最低版本应该提高到8.1。在此之前,Symfony的小版本更新不会增加PHP的最低版本。目前,根据Laravel开发者TaylorOtwell的消息,在最坏的情况下,Laravel9还将提供至少2年的安全更新(即普通版的支持)。根据laravel/framework的composer.json声明,在下一个Laravel大版本中,Laravel10将依赖Symfony6.1的部分组件,这也意味着Laravel10所需的PHP最低版本将提升至8.1。结语同时,TaylorOtwell也发推文:“鼓励大家始终尝试最新的Laravel”Symfony关于该问题的讨论现已结束,并确认Symfony6.1将把最低PHP版本限制提高到8.1,在选择方面PHP框架和PHP版本,我个人还是认为,为了避免后期版本跨度较大带来的问题,我们应该及时使用和更新到较新的版本,而不是回避使用LTS版本,这样会造成一些“历史问题”的文章以后关闭供个人表达。如果大家有好的建议和意见,不妨一起探讨。如果文章内容侵犯了您的权益,请联系我处理。您也可以点击文章中的源链接和文章底部的参考链接了解更多详情。参考LaravelLTS是一个陷阱。随着Laravel5.1的发布...|通过杰森·麦克里|(github.com)
