Laravel 11.x新特性全解析

好的,我们来梳理一下 Laravel 11.x 版本(于 2024 年 3 月发布)的主要新特性和变化:

1. 精简的默认应用骨架

  • 更少的配置文件 : 许多原先独立的配置文件(如 config/cors.php, config/broadcasting.php, config/view.php 等)被移除或合并到了核心的 config/app.php 文件中。框架默认只提供必要的配置。

  • 精简的 bootstrap/app.php: 应用核心逻辑的引导文件被大幅简化。

  • 移除 app/Http/Kernel.php : 原先在 Kernel.php 中定义的 HTTP 中间件和路由中间件现在直接在 bootstrap/app.php 文件中注册。例如:

    php 复制代码
    ->withMiddleware(function (Middleware $middleware) {
        $middleware->web(append: [
            \App\Http\Middleware\HandleInertiaRequests::class,
        ]);
    })
  • 精简的路由文件routes/api.phproutes/channel.php 被移除,默认的路由定义都放在 routes/web.php 中。当然,开发者仍然可以创建和使用 api.php 等文件。

2. 性能优化与默认值调整

  • 更高的内存限制php artisan serve 命令默认的内存限制从 128MB 提升到了 256MB,以更好地支持现代应用。
  • 最低 PHP 版本要求 : Laravel 11 需要 PHP 8.2 或更高版本。
  • 默认启用 SQLiteconfig/database.php 中默认配置并启用了 SQLite 数据库连接,方便快速启动项目。

3. 改进的 make:model 命令

当使用 make:model 创建模型时,如果同时传递 --migration-m 标志,Laravel 11 会默认同时生成一个模型工厂 (--factory) 和一个数据填充器 (--seed),简化了测试数据的准备流程。

4. 新的 php artisan install 命令

引入了一个新命令 install,用于快速安装常见的、可选的 Laravel 功能包和配置:

  • api: 安装 Laravel Sanctum 并配置 API 认证。
  • breeze: 安装 Laravel Breeze 认证脚手架。
  • dev: 安装 Laravel 开发工具包(包含 ignition 错误页面等)。
  • inertia: 安装 Inertia.js 支持。
  • pest: 安装 Pest 测试框架。
  • vue / react: 安装对应的前端脚手架。 例如:php artisan install inertia --vue 会安装 Inertia.js 和 Vue 的支持。

5. 原生类型声明支持

框架生成的许多类(如控制器、中间件等)现在默认包含了原生 PHP 类型声明(如 string $id),鼓励更现代化的 PHP 编码实践,提高代码的可读性和健壮性。

6. 测试框架更新

  • Pest 作为可选默认测试框架 : 虽然 PHPUnit 仍然是核心测试框架,但 Laravel 11 通过 php artisan install pest 提供了将 Pest 设置为默认测试框架的便捷方式。
  • 更精简的 phpunit.xml 文件: 默认的 PHPUnit 配置文件被简化。

7. 健康检查路由

默认添加了一个 /up 健康检查端点。该端点返回一个简单的 JSON 响应 {"status": "ok"},可用于监控应用的基本运行状态(如负载均衡器健康检查)。

8. 调度器改进

app/Console/Kernel.php 中的 schedule 方法现在支持类型提示:

php 复制代码
use Illuminate\Console\Scheduling\Schedule;
protected function schedule(Schedule $schedule): void
{
    $schedule->command('inspire')->hourly();
}

总结

Laravel 11 的核心目标是 简化现代化 。它通过移除不必要的默认配置和文件,减少项目启动时的"噪音",同时引入了更现代的 PHP 特性(如类型声明)和工具链(如 Pest)。php artisan install 命令大大简化了添加常见功能的过程。这些变化使得新项目结构更清晰,同时也为开发者提供了构建现代、健壮应用所需的工具。

相关推荐
Cheng小攸1 小时前
综合实战(3)
windows·php
weixin_BYSJ19871 小时前
基于Django的非物质文化遗产管理系统设计与实现(源码 + 文档)98950
java·javascript·spring boot·python·django·flask·php
weixin_BYSJ19872 小时前
springboot鹿邑县旅游网站99312(源码+文档)
java·javascript·spring boot·python·django·flask·php
printfLILEI13 小时前
php中的类与对象以及反序列化
linux·开发语言·php
华科大胡子13 小时前
AI开发者的网络卡点:Anthropic连接超时
开发语言·php
bill328227804315 小时前
AE 的 Animation Composer 描边动效玩法 + 极简 MG 制作流程(含示例)
php·composer
csdn_aspnet17 小时前
PHP 算法 LeetCode 编号 70 - 爬楼梯
算法·leetcode·php
林熙蕾LXL18 小时前
socket编程-TCP开发常用函数
网络协议·tcp/ip·php
m0_7381207218 小时前
渗透测试基础——黑盒测试下的Web漏洞挖掘与利用解析(一)
服务器·前端·网络·安全·php
catchadmin21 小时前
免费可商用 PHP 管理后台 CatchAdmin V5.3.1 发布 后台打包直降 5s 内
开发语言·php