本文目录导读:

是的,Laravel 框架的版本号严格遵循 SemVer(语义化版本控制) 规范。
SemVer 的格式为 主版本号.次版本号.修订号(MAJOR.MINOR.PATCH),Laravel 在官方文档和版本发布中明确遵守这一标准。
具体含义和 Laravel 的对应关系
你需要了解 Laravel 如何应用 SemVer 规则,特别是不兼容的破坏性变更的定义:
-
主版本号(MAJOR)
- 含义:当做了不兼容的 API 或底层架构修改时,递增主版本号。
- Laravel 示例:Laravel 5 → Laravel 6,Laravel 9 → Laravel 10,Laravel 10 → Laravel 11。
- 影响:升级主版本通常需要修改代码,因为某些函数被移除、参数签名发生重大变化或底层架构(如 PHP 最低版本要求)发生变化。
-
次版本号(MINOR)
- 含义:当新增了向后兼容的功能时,递增次版本号。
- Laravel 示例:Laravel 10.0 → Laravel 10.1,Laravel 11.0 → Laravel 11.5。
- 注意:这是官方文档很重要的一点,在次版本号更新中,可以包含重大破坏性变更,前提是该变更对最终开发者不可见(内部代码重构、数据库查询底层实现优化),或者官方明确声明该变更是为了修复一个严重 bug 而不得不进行的非公开破坏,次版本升级应该非常安全,只需更新依赖即可。
-
修订号(PATCH)
- 含义:当进行向后兼容的 Bug 修复时,递增修订号。
- Laravel 示例:Laravel 11.5.0 → Laravel 11.5.1,Laravel 11.5.2。
- 影响:只修复 bug,不添加新功能,完全安全升级。
一个重要的例外情况(Laravel 的政策)
虽然遵循 SemVer,但 Laravel 在主版本号发布之前,允许在次版本号(x.0 到 x.9)发布时引入一些“对开发者可见”的、但被认为是预发布或实验性的破坏性变更。
官方文档明确说明:在次版本号期间引入的所有破坏性变更,都会在下一次主版本发布之前被明确标记、文档化,并提供升级指导(通常以《升级指南》的形式)。
如何查看 Laravel 版本
你可以在 Composer 依赖管理文件 composer.json 中看到版本约束,这体现了 SemVer 的应用:
{
"require": {
"php": "^8.1",
"laravel/framework": "^10.0"
}
}
^10.0表示允许自动安装0.0及以上、但小于0.0的所有版本(即只能升级次版本和修订版,不会自动升级到主版本 11)。~10.0表示只允许安装0.x范围内的修订版(严格限制次版本和主版本不变)。
| 版本部分 | 含义 | 是否向后兼容 | 是否包含破坏性变更 |
|---|---|---|---|
| 主版本 (e.g., 10→11) | 主要架构或 API 不兼容 | 否 | 是 |
| 次版本 (e.g., 10.0→10.1) | 新增功能或优化 | 是(大多数情况下) | 否(或仅限内部/实验性) |
| 修订版 (e.g., 10.1.0→10.1.1) | Bug 修复 | 是 | 否 |
是的,Laravel 严格遵守 SemVer,但开发者需要注意,主版本升级是最大的分水岭,而次版本和修订版应尽可能平滑。