版本发布说明
版本号方案
Laravel 及其其他第一方包遵循 语义化版本。框架的主要版本每年发布一次(约在第一季度),而次要版本和补丁版本可能每周发布一次。次要版本和补丁版本绝不应包含不兼容的更改。
在从您的应用程序或包中引用 Laravel 框架或其组件时,您应始终使用诸如 ^13.0 这样的版本约束,因为 Laravel 的主要版本确实包含不兼容的更改。但是,我们始终努力确保您可以在一日或更短时间内升级到新的主要版本。
命名参数
命名参数 不受 Laravel 向后兼容性指南的保护。为了改进 Laravel 代码库,我们可能会在必要时重命名函数参数。因此,在调用 Laravel 方法时使用命名参数应谨慎进行,并理解参数名称将来可能会更改。
支持政策
对于所有 Laravel 版本,提供 18 个月的错误修复和 2 年的安全修复。对于所有其他库,只有最新的主要版本接收错误修复。此外,请查阅 Laravel 支持的数据库版本。
| 版本 | PHP (*) | 发布 | 错误修复截止 | 安全修复截止 |
|---|---|---|---|---|
| 10 | 8.1 - 8.3 | 2023年2月14日 | 2024年8月6日 | 2025年2月4日 |
| 11 | 8.2 - 8.4 | 2024年3月12日 | 2025年9月3日 | 2026年3月12日 |
| 12 | 8.2 - 8.5 | 2025年2月24日 | 2026年8月13日 | 2027年2月24日 |
| 13 | 8.3 - 8.5 | 2026年3月17日 | 2027年第三季度 | 2028年3月17日 |
(*) 支持的 PHP 版本
Laravel 13
Laravel 13 延续了 Laravel 年度发布的节奏,重点关注 AI 原生工作流、更强的默认值以及更具表现力的开发者 API。此版本包括第一方 AI 原语、JSON:API 资源、语义/向量搜索功能,以及对队列、缓存和安全性的渐进式改进。
最小的不兼容更改
在此发布周期中,我们的重点主要是最大限度地减少不兼容的更改。相反,我们致力于全年持续交付不破坏现有应用程序的体验改进。
因此,就升级工作量而言,Laravel 13 是一个相对较小的升级,同时仍然提供了重要的新功能。鉴于此,大多数 Laravel 应用程序可以升级到 Laravel 13,而无需更改太多应用程序代码。
PHP 8.3
Laravel 13.x 要求最低 PHP 版本为 8.3。
Laravel AI SDK
Laravel 13 引入了第一方 Laravel AI SDK,为文本生成、工具调用代理、嵌入、音频、图像和向量存储集成提供了统一的 API。
借助 AI SDK,您可以构建与提供商无关的 AI 功能,同时保持一致、Laravel 原生的开发者体验。
例如,一个基本代理可以通过单个调用进行提示:
use App\Ai\Agents\SalesCoach;
$response = SalesCoach::make()->prompt('分析此销售记录...');
return (string) $response;Laravel AI SDK 还可以生成图像、音频和嵌入:
对于视觉生成用例,SDK 提供了一个简洁的 API,用于根据自然语言提示创建图像:
use Laravel\Ai\Image;
$image = Image::of('一个放在厨房柜台上的甜甜圈')->generate();
$rawContent = (string) $image;对于语音体验,您可以为助手、旁白和无障碍功能从文本中合成听起来自然的音频:
use Laravel\Ai\Audio;
$audio = Audio::of('我喜欢用 Laravel 编码。')->generate();
$rawContent = (string) $audio;对于语义搜索和检索工作流,您可以直接从字符串生成嵌入:
use Illuminate\Support\Str;
$embeddings = Str::of('纳帕谷有很棒的葡萄酒。')->toEmbeddings();JSON:API 资源
Laravel 现在包含第一方 JSON:API 资源,使得返回符合 JSON:API 规范的响应变得简单直接。
JSON:API 资源处理资源对象序列化、关系包含、稀疏字段集、链接以及符合 JSON:API 的响应头。
请求伪造保护
出于安全考虑,Laravel 的 请求伪造保护 中间件已得到增强并正式化为 PreventRequestForgery,添加了基于来源的请求验证,同时保持与基于令牌的 CSRF 保护的兼容性。
队列路由
Laravel 13 通过 Queue::route(...) 添加了 按类别的队列路由,允许您在一个中心位置为特定作业定义默认队列/连接路由规则:
Queue::route(ProcessPodcast::class, connection: 'redis', queue: 'podcasts');扩展的 PHP 属性
Laravel 13 继续在整个框架中扩展第一方 PHP 属性支持,使常见的配置和行为问题更加声明式,并与您的类和方法共存。
值得注意的补充包括控制器和授权属性,如 #[Middleware] 和 #[Authorize],以及面向队列的作业控制,如 #[Tries]、#[Backoff]、#[Timeout] 和 #[FailOnTimeout]。
例如,控制器中间件和策略检查现在可以直接在类和方法上声明:
<?php
namespace App\Http\Controllers;
use App\Models\Comment;
use App\Models\Post;
use Illuminate\Routing\Attributes\Controllers\Authorize;
use Illuminate\Routing\Attributes\Controllers\Middleware;
#[Middleware('auth')]
class CommentController
{
#[Middleware('subscribed')]
#[Authorize('create', [Comment::class, 'post'])]
public function store(Post $post)
{
// ...
}
}在 Eloquent、事件、通知、验证、测试和资源序列化 API 中也引入了额外的属性,在框架的更多领域为您提供一致的、以属性为先的选项。
缓存 TTL 扩展
Laravel 现在包含 Cache::touch(...),它允许您扩展现有缓存项的 TTL,而无需检索和重新存储其值。
语义/向量搜索
Laravel 13 通过原生向量查询支持、嵌入工作流以及跨 搜索、查询 和 AI SDK 文档记录的相关 API,深化了其语义搜索功能。
这些特性使得使用 PostgreSQL + pgvector 构建由 AI 驱动的搜索体验变得简单直接,包括对直接从字符串生成的嵌入进行相似性搜索。
例如,您可以直接从查询构建器运行语义相似性搜索:
$documents = DB::table('documents')
->whereVectorSimilarTo('embedding', '纳帕谷最好的酒庄')
->limit(10)
->get();