跳转到主内容
极星编程网:以代码为星,赴技术山海!

Laravel 11的目录结构有哪些重大变化? (精简版应用结构)

被直接删除的目录是app/Http、app/Exceptions、app/Http/Middleware和config/;这些路径在新项目中默认不存在,强行引用会报错,中间件与异常处理逻辑已统一收口至bootstrap/app.php的withMiddleware和withExceptions闭包。 Laravel 11 彻底移除了
app/Http
、
app/Exceptions
、
app/Http/Middleware
等传统子目录,也不再默认提供
config/
目录——这不是“精简”,而是重构后的约定优先设计。 哪些目录被直接删除了? 这些路径在新项目中默认不存在,强行引用会报错:
app/Http/Kernel.php
→ 全局中间件逻辑现在统一收口到
bootstrap/app.php
中的
withMiddleware
闭包
app/Http/Middleware/
→ 中间件类可放在
app/Middleware/
(需手动创建),但更推荐按需注册,避免冗余
app/Exceptions/Handler.php
→ 异常处理逻辑迁移到
bootstrap/app.php
的
withExceptions
闭包
config/
目录 → 配置不再通过 PHP 文件加载,改由
bootstrap/app.php
内联定义或使用 Laravel 的新配置服务(如
Illuminate\Support\Facades\Config
动态设置) 模型属性转换怎么写?
casts()
方法必须用吗? 是的,Laravel 11 要求将
$casts
数组改为
casts()
实例方法,这是强制性变更:
class User extends Model { // ✅ Laravel 11 正确写法 protected function casts(): array { return [ 'email_verified_at' => 'datetime', 'settings' => 'array', ]; } }
⚠️ 常见错误:仍保留
protected $casts = [...]
—— 框架会忽略它,且不报错,导致类型转换失效;旧项目升级时务必全局搜索替换。 PHP 8.5.5 PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。 下载 CQRS 目录(
app/Actions
、
app/Queries
)是自动生成的吗? 不是。这些目录是 Laravel 11 新增的**推荐约定路径**,但不会自动创建。运行命令时才生成:
php artisan make:command CreateUserCommand
→ 默认输出到
app/Commands/
(非
app/Actions/
)
php artisan make:query GetUserQuery
→ 需要先手动建
app/Queries/
,否则报错“Class not found” 若想启用官方 CQRS 推荐结构,得先执行:
mkdir -p app/{Actions,Commands,Queries}
注意:
app/Actions/
是用于封装无状态业务逻辑(如“发送欢迎邮件”),和
Commands
(含队列、事件分发)职责不同,别混用。 最易被忽略的一点:Laravel 11 的“精简”不是删功能,而是把配置权从文件转移到代码入口(
bootstrap/app.php
)。很多问题其实源于没重写这个文件里的
withMiddleware
或
withExceptions
闭包——而不是目录少了就完事了。

相关文章