在Laravel中创建App/Models目录存放模型是否是良好开发实践?
关于Laravel模型迁移到
App/Models目录的问题解答 首先明确结论:这是完全值得推荐的行业通用良好实践,不属于错误做法,也不会引发未知兼容问题
很多开发者有这个顾虑本质是混淆了「官方默认配置」和「官方推荐最佳实践」的区别:
Laravel的默认项目结构是面向极简入门场景设计的,对于只有2-3个模型的小型Demo或者微型项目来说,模型直接放在
App/根目录确实更简单,减少新手的理解成本。但只要项目规模稍微扩大,模型数量超过5个之后,单独拆分App/Models目录就是几乎所有开发者的共同选择。
实际上从Laravel 8版本开始,官方新创建的项目已经默认自带App/Models目录,make:model生成命令也会默认把模型文件写到这个目录下,足以证明这个结构是官方认可的规范用法。
迁移的注意事项
只要做好以下几个调整,就不会出现任何问题:
- 移动模型文件到
app/Models目录后,修改每个模型的命名空间声明:把原来的namespace App;改为namespace App\Models; - 全局替换所有业务代码中对模型的引用,比如把
use App\User;更新为use App\Models\User; - 修改关联配置文件的对应项:比如
config/auth.php中用户提供器的模型配置,要改为App\Models\User::class - 迁移完成后执行
composer dump-autoload刷新自动加载映射即可
为什么早期版本默认不采用这个结构
和Laravel最初的定位有关:早期Laravel主打快速开发、低门槛入门,默认结构做的尽可能精简,避免给新手带来「不必要的目录嵌套」的困惑。但随着Laravel生态逐渐成熟,面向中大型项目的使用场景越来越多,官方也在8版本之后将App/Models调整为默认结构,完全不存在「不规范」的问题。
内容的提问来源于stack exchange,提问作者user_
相关产品推荐
相关产品推荐

