版本控制方案

Laravel 及其其他官方包遵循语义化版本。框架的主要版本每年(约第一季度)发布一次,而次要版本和补丁版本可能每周发布。次要版本和补丁版本绝不应包含破坏性变更。

当从应用程序或包中引用 Laravel 框架或其组件时,应始终使用像 ^13.0 这样的版本约束,因为 Laravel 的主要版本确实包含破坏性变更。不过,我们会尽力确保您能在一天或更短的时间内更新到新的主要版本。

命名参数

命名参数不受 Laravel 向后兼容性准则的约束。为了改进 Laravel 代码库,我们可能会在必要时重命名函数参数。因此,在调用 Laravel 方法时使用命名参数应谨慎,并了解参数名称未来可能会发生变化。

支持策略

对于所有 Laravel 版本,Bug 修复提供 18 个月,安全修复提供 2 年。对于所有其他库,仅最新版本获得 Bug 修复。此外,请查看 Laravel 支持的数据库版本。

版本PHP (*)发布日期Bug 修复截止安全修复截止
108.1 - 8.32023年2月14日2024年8月6日2025年2月4日
118.2 - 8.42024年3月12日2025年9月3日2026年3月12日
128.2 - 8.52025年2月24日2026年8月13日2027年2月24日
138.3 - 8.52026年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('Analyze this sales transcript...');

return (string) $response;

Laravel AI SDK 还可以生成图像、音频和嵌入:

对于视觉生成用例,SDK 提供了一个简洁的 API,可通过自然语言提示创建图像:

use Laravel\Ai\Image;

$image = Image::of('A donut sitting on the kitchen counter')->generate();

$rawContent = (string) $image;

对于语音体验,您可以为助手、旁白和无障碍功能从文本合成听起来自然的音频:

use Laravel\Ai\Audio;

$audio = Audio::of('I love coding with Laravel.')->generate();

$rawContent = (string) $audio;

对于语义搜索和检索工作流,您可以直接从字符串生成嵌入:

use Illuminate\Support\Str;

$embeddings = Str::of('Napa Valley has great wine.')->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 通过原生向量查询支持、嵌入工作流以及相关 API 深化了其语义搜索方案,相关文档涵盖搜索、查询以及 AI SDK。

这些功能使使用 PostgreSQL 和 pgvector 构建 AI 驱动的搜索体验变得简单直接,包括对直接从字符串生成的嵌入进行相似性搜索。

例如,您可以直接从查询构建器运行语义相似性搜索:

$documents = DB::table('documents')
    ->whereVectorSimilarTo('embedding', 'Best wineries in Napa Valley')
    ->limit(10)
    ->get();