【问题标题】:Accessing a custom object inside a Codeigniter 4 model访问 Codeigniter 4 模型中的自定义对象
【发布时间】:2021-04-30 00:09:17
【问题描述】:

我正在使用 CodeIginter 4,并且我在控制器中实例化了一个新对象,来自我的 app/libraries 文件夹中的一个类,如下所示:

// in controller
use App\Libraries\LN_Account;

// in controller method
$account = new LN_Account(); 

但是当我将 $account 传递给我的模型并检查它是否是 LN_Account 的实例时,条件失败。

// in controller method
$account = $this->AuthenticationModel->getAuthenticationCredentials($account); 

// in model
public function getAuthenticationCredentials($account) {
    if ($account instanceof LN_Account) {
         // I never get here
     }
} 

如何使 LN_Account 对我的模型可见?

我得到的错误是 LN_Account 不存在。它存在于控制器中就好了。在 CI3 中,控制器中可用的任何东西都在模型中可用。有变化吗?

【问题讨论】:

  • 你能发布确切的错误日志吗?试试is_a() 而不是instanceof

标签: codeigniter object model codeigniter-4


【解决方案1】:

是的,它确实改变了;您所指的“超级对象”不是 CI4 中的“事物”。您仍然可以检查是否是 instanceof 就好了;只是模型不会自动“知道”LN_Account 的内容/位置只是因为您在 Controller 中used 它。

您可以做以下两件事之一:

  1. 通过将use App\Libraries\LN_Account; 添加到模型代码中,告诉模型类LN_Account 的内容和位置,或者

  2. 在使用instanceof(或任何需要引用该类的语句)时,只需通过其完整命名空间引用LN_Account

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-02
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多