Php Codeigniter模型自动加载不适用于MY_Loader类

Php Codeigniter模型自动加载不适用于MY_Loader类,php,codeigniter,codeigniter-3,autoloader,Php,Codeigniter,Codeigniter 3,Autoloader,我已经在codeigniter的autoload.php文件中添加了“header\u model”。现在是: $autoload['model'] = array("header_model"); 我还可以在其他控制器中成功地使用$this->header\u model 但是不能在MY\u Loader类中使用它,该类是CI\u Loader的扩展 例如: 位于应用程序/控制器/的页控制器: MY_Loader类(位于应用程序/核心/文件夹中): 问题在于$此是页面和我的加载器中的两个不同

我已经在codeigniter的autoload.php文件中添加了“header\u model”。现在是:

$autoload['model'] = array("header_model");
我还可以在其他控制器中成功地使用
$this->header\u model

但是不能在
MY\u Loader
类中使用它,该类是
CI\u Loader
的扩展

例如: 位于应用程序/控制器/的页控制器:

MY_Loader类(位于应用程序/核心/文件夹中):


问题在于
$此
页面
我的加载器
中的两个不同对象

自动加载的类(包括模型)最终成为控制器中的变量。因此,
$this->->->header\u model…
页面中工作,因为它是一个控制器。但是函数
模板中的对象
$this
myu Loader
类的实例。该类没有名为
header\u model
的变量

要引用控制器,请使用
get\u instance()
。这是怎么做的

public function template($template_name, $vars = array(), $return = FALSE)
{

    $CI =& get_instance();
    $menuArray = $CI->header_model->get_menus(); //echoes errors
    //like: Undefined property: MY_Loader::$header_model
    $vars["menuArray"] = $menuArray;
}

这不是问题的一部分,但我想指出的是,您不需要
MY\u Model
中的
\u construct()
函数。如果子类不在构造函数中进行任何初始化,则无需创建一个只调用
parent::u construct()的构造函数。PHP将找到父类构造函数并自动执行它。

成功,谢谢:)
<?php
   class MY_Loader extends CI_Loader {

   function __construct()
   {
       parent::__construct();
   }

   public function template($template_name, $vars = array(), $return = FALSE)
   {

       $menuArray = $this->header_model->get_menus(); //echoes errors
       //like: Undefined property: MY_Loader::$header_model
       $vars["menuArray"] = $menuArray;
   }
}
public function template($template_name, $vars = array(), $return = FALSE)
{

    $CI =& get_instance();
    $menuArray = $CI->header_model->get_menus(); //echoes errors
    //like: Undefined property: MY_Loader::$header_model
    $vars["menuArray"] = $menuArray;
}