CodeIgniter4中加载vendor目录下Myth-Auth的LoginModel报错求助
CodeIgniter4 加载Myth-Auth LoginModel报错解决方法
问题说明
在app/Controllers/BaseController.php中尝试实例化Myth-Auth的LoginModel时,执行代码:
$this->loginModel = new Myth\Auth\Models\LoginModel;
出现报错:Class 'App\Controllers\Myth\Auth\Models\LoginModel' not found
原因是BaseController默认处于App\Controllers命名空间下,PHP会自动在当前命名空间下查找Myth\Auth\Models\LoginModel,而该类实际位于根命名空间的Myth\Auth\Models下,因此找不到对应类。
解决方法
方法一:引入use语句
在BaseController文件的命名空间声明下方,添加类引入语句:
namespace App\Controllers; use Myth\Auth\Models\LoginModel; // 新增这行 class BaseController extends Controller { // ... 其他代码 public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); $this->loginModel = new LoginModel(); // 直接实例化类 } }
方法二:使用完全限定类名(带根命名空间前缀)
无需添加use语句,直接在实例化时给类名加上开头的反斜杠,指定从根命名空间查找:
$this->loginModel = new \Myth\Auth\Models\LoginModel();
内容的提问来源于stack exchange,提问作者Gunping
相关产品推荐
相关产品推荐

