Laravel自定义类找不到求助:App\Translators\MyOwnClass加载失败
问题描述
我在App目录下创建了Translators文件夹,其中包含MyOwnClass.php文件,代码如下:
<? namespace App\Translators; class MyOwnClass{ public function home() { dd("Hello World); } }
在需要使用该类的MachineController中已引入并实例化:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Translators\MyOwnClass; class MachineController extends Controller { public function home(){ $machine = (New MyOwnClass); } }
已执行composer dump-autoload命令,且composer.json的autoload配置如下:
"autoload": { "psr-4": { "App\\": "app/", "Database\\Factories\\": "database/factories/", "Database\\Seeders\\": "database/seeders/" } },
但访问MachineController::home时仍报错:
Class "App\Translators\MyOwnClass" not found
请问我遗漏了什么?
排查与解决步骤
- 检查文件与目录的大小写:Laravel严格遵循PSR-4规范,类名、文件名、目录名的大小写必须完全匹配。如果服务器是Linux系统(区分大小写),要确保目录是
app/Translators(首字母大写),文件是MyOwnClass.php,避免出现小写的translators目录或myownclass.php文件。 - 修复代码语法错误:MyOwnClass.php里的
dd("Hello World);缺少闭合双引号,应改为dd("Hello World");。语法错误会导致文件解析失败,进而让类无法被正确加载。 - 确认文件路径正确性:务必保证
MyOwnClass.php确实在app/Translators/目录下,不要误放到app/Http/Translators或其他子目录中。 - 重新优化自动加载:执行
composer dump-autoload -o(-o参数用于优化自动加载),强制Composer更新自动加载映射文件,避免缓存影响。 - 核对命名空间与类名拼写:检查命名空间
App\Translators和类名MyOwnClass是否存在拼写错误,比如把Translators写成Translator,或类名多写/漏写字母。
内容的提问来源于stack exchange,提问作者Stefano Martini
相关产品推荐
相关产品推荐

