【问题标题】:get_instance() is returning null in Codeigniter 2get_instance() 在 Codeigniter 2 中返回 null
【发布时间】:2011-08-19 20:52:06
【问题描述】:

我需要在没有$this->load->model 的情况下加载我的模型。我必须像这样加载它:

$modelName = new ModelName();//from a controller

class ModelName{
  public function __construct(){
        $CI =&get_instance();
        var_dump($CI);//null
  }
}

它工作正常,但$CI =&get_instance(); 实际上是空的。知道为什么吗?

编辑 1
如果我从常规控制器尝试 get_instance,它正在工作(也来自助手)。
我正在使用 require_once 加载模型

【问题讨论】:

  • 如果您在控制器中尝试$modelName = new ModelName(); 之前的行,是否会发生同样的事情?只是在黑暗中拍摄,我不确定为什么会发生这种情况。模型中的 CI 常量(如 CI_VERSIONAPPPATH)怎么样,可以访问吗?对其他人:get_instance() 是一个全局 Codeigniter 函数,它返回 Controller/Codeigniter 对象。
  • get_instance 是全局函数还是类函数?如果它是一个类函数,你称它为 self::get_instance()。不过,我没有看到模型扩展了任何其他包含 get_instance 方法的类。
  • 这个模型实际上是从您的测试用例中的控制器调用的,还是从其他地方调用的?你是如何加载模型的。您是否使用自己的自定义自动加载功能?请提供更多详细信息。
  • 是的,但是您从哪里使用 require_once() 加载模型?我怀疑没有所有相关代码的任何人都能够帮助您解决问题。
  • 您的模型在哪里?在图书馆? $this->load->library('ModelName')工作?

标签: php oop codeigniter model


【解决方案1】:

尝试扩展 CI_Model。

class ModelName extends CI_Model {
    public function __construct(){
        $CI =&get_instance();
        var_dump($CI);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 2015-10-05
    • 2018-03-15
    • 1970-01-01
    • 2017-10-29
    • 2019-04-20
    • 2018-09-18
    相关资源
    最近更新 更多