CodeIgniter 4:控制器构造函数中的函数参数太少”错误

问题描述 投票:0回答:1

我在 CodeIgniter 项目中遇到一个问题,在我的一个控制器的构造函数中出现“函数参数太少”错误。我不确定为什么会发生此错误,我需要帮助解决它。

错误信息:

函数 App\Controllers\RestAPI\V1\OTP\OTPController::__construct() 的参数太少,传入 0 ...

控制器构造函数:

public function __construct(JWTService $jwtService, UserModel $userModel, ReferralCodeModel $referralCodeModel, ReferralHistoryModel $referralHistoryModel)
{
    $this->jwtService = $jwtService;
    $this->userModel = $userModel;
    $this->referralCodeModel = $referralCodeModel;
    $this->referralHistoryModel = $referralHistoryModel;
}

我检查过的内容:

  1. 我已验证依赖项(JWTService、UserModel、ReferralCodeModel、ReferralHistoryModel)是否在我的 CodeIgniter 项目中正确配置。
  2. 我检查了我的 CodeIgniter 配置文件(app/Config/Services.php 和 app/Config/Autoload.php)以确保服务和模型已注册。
  3. 我已确保我的配置文件中没有拼写错误或命名空间问题。
  4. 我已经运行composer dump-autoload来重新生成自动加载器文件。

**请求帮助: ** 我将不胜感激有关如何解决此错误并将所需的依赖项正确注入我的控制器的指导。如果您有使用 CodeIgniter 的依赖注入系统的经验,并且可以深入了解发生此错误的原因,请分享您的专业知识。谢谢!

php codeigniter dependency-injection constructor autoload
1个回答
0
投票

抱歉,我没有足够的声誉来写评论,所以我发布作为答案。

…在我的 CodeIgniter 项目中已正确配置。

您还意味着它们在实例化时传递给类?

有错误提示

0 passed in…
,因此构造函数没有收到任何必要的四个信息。它还应该告诉您在代码中尝试实例化 OTPController 的位置。

您可以向我们展示完整的错误消息吗?

在你的代码中的某个地方你会有这样的东西:

//instantiating the four objects somewhere in your code
$jwtService = new JwtService();
$userModel = new UserModel();
$referralCodeModel = new ReferralCodeModel();
$referralHistoryModel = new ReferralHistoryModel();

// pass them to the OTPController
$OTPController = new OTPController($jwtService, $userModel, $referralCodeModel, $referralHistoryModel)
© www.soinside.com 2019 - 2024. All rights reserved.