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

相关推荐
niucloud-admin2 小时前
PHP SAAS 框架常见问题——安装应用时出现 is_dir() 报错
php
徐子元竟然被占了!!2 小时前
IS-IS协议
开发语言·网络·php
zopple2 小时前
Laravel7.x核心特性全解析
开发语言·php·laravel
ICT系统集成阿祥2 小时前
黄金秘籍解决华为防火墙最困难的故障
网络·华为·php
东方隐侠安全团队-千里3 小时前
AI Coding Agent 执行依赖安装前的安全检查清单:从 Composer 漏洞看到命令执行
人工智能·安全·php·composer
StockTV3 小时前
韩国市场API技术对接指南,涵盖实时行情、历史数据、指数信息、公司详情等功能
java·开发语言·python·php
fengci.4 小时前
ctfshow其他(web408-web432)
android·开发语言·前端·学习·php
sensen_kiss5 小时前
CAN302 Coursework1对 JavaScript 和 PHP 的考察
javascript·学习·php
HoweChenya5 小时前
Gemma-4 实测:31B Dense 与 26B MoE 在 H20 上的性能分水岭
开发语言·php