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 命令大大简化了添加常见功能的过程。这些变化使得新项目结构更清晰,同时也为开发者提供了构建现代、健壮应用所需的工具。

相关推荐
北京盛世宏博14 小时前
物联网传感器通信协议:帧字段规划、CRC 校验、异常包过滤方案
网络·物联网·php
三84414 小时前
PHP Session 反序列化:防御加固、审计套路与总结
web安全·php·安全加固·session反序列化
中科三方15 小时前
DNS拨测到底在拨测什么?
开发语言·github·php·dns·云拨测
企业通信技术笔记15 小时前
企业IM内外网隔离部署:DNS、证书、WebSocket与跨网接口设计
websocket·网络协议·架构·php·信息与通信
szarron16 小时前
RF Demo Kit|NanoVNA 射频演示测试板完整上手教程,滤波器、衰减器、SOLT 校准学习板
开发语言·人工智能·学习·php·射频工程·频谱仪
sbjdhjd19 小时前
从 assert 动态调用报错到临时文件链路:PHP 5.6 与 7.3 授权靶场中的短 payload 复盘 | (17字符绕过)
安全·网络安全·数据挖掘·开源·云计算·php·字符绕过
sbjdhjd19 小时前
从 7 字符文件名拼接到二维数组取值:PHP 无参函数限制下的受控靶场复盘 | (7字符绕过)
网络·nginx·安全·网络安全·云计算·php·apache
fengkai454520 小时前
七、华为云网络综合实验 & 运维类及其他服务总结
服务器·开发语言·php
PHP实战开发录20 小时前
PHP日志写满磁盘后接口为什么异常
开发语言·系统架构·php·开发