升级 laravel 10 到 11 后需修正模型命名空间为 appmodels 并严格匹配大小写,facade 如 hash 应改用 illuminatehashinghashmanager 或依赖注入,同时更新 composer.json psr-4 配置并执行 composer dump-autoload。

升级 Laravel 10 到 11 后出现 Class 'AppModelsUser' not found、Class 'IlluminateSupportFacadesHash' not found 等错误,说明框架升级已破坏原有自动加载或引用路径,必须按 Laravel 11 的命名空间规范和废弃规则逐项修正。
修正模型类找不到错误
第一步:确认所有模型文件位于 app/Models/ 目录下,且文件名与类名严格一致(如 User.php → class User)。
第二步:打开每个模型文件,检查 namespace 声明是否为 namespace AppModels; —— 若写成 App\Models 或 App/Models 或漏掉分号,Composer 将无法识别。
第三步:在 routes/web.php 或控制器中引用模型时,必须使用完整 use 语句:use AppModelsUser;。直接写 new User() 或 AppModelsUser::find(1) 而不 use,会触发 PSR-4 加载失败。
注意:Laravel 11 默认启用严格模式,类名大小写必须完全匹配——例如写成 use AppModelsuser;(小写 user)将导致 Class not found。
修复 Facade 类引用失效
方法一:Hash、Mail、Storage 等 Facade 已从 IlluminateSupportFacades 迁移至更精确的命名空间。
将旧代码中的:use IlluminateSupportFacadesHash;
替换为:use IlluminateHashingHashManager; 或更推荐的方式——直接使用依赖注入:public function __construct(HashManager $hash) { ... }。
方法二:若坚持用 Facade,需确认该 Facade 是否仍被注册。Laravel 11 移除了部分 Facade 别名(如 Lang),改用 __() 辅助函数替代;Session 改为 IlluminateSessionSessionManager。
⚠️关键提醒:不要在 config/app.php 的 'aliases' 数组中手动添加已废弃的 Facade 别名,这会导致服务容器解析冲突。
刷新自动加载并验证路径映射
① 运行 composer dump-autoload 强制重建 PSR-4 映射表。
② 检查 vendor/composer/autoload_psr4.php,确认存在:'App\' => array($baseDir . '/app'), —— 若缺失,说明 composer.json 中的 autoload 配置被意外修改。
③ 打开 composer.json,确保 autoload 段包含标准 Laravel 11 配置:
"autoload": { "psr-4": { "App\": "app/", "Database\Factories\": "database/factories/", "Database\Seeders\": "database/seeders/" } }
④ 修改后立即执行 composer install(非 update),避免第三方包版本错乱。











