Проблема в том, что $this
- это два разных объекта в Pages
и MY_Loader
.
. Автозагрузка классов, включая модели, в контроллере является переменным.Так что $this->->header_model...
работает внутри Pages
, потому что это контроллер.Но объект $this
внутри функции template
является экземпляром класса MY_Loader
.И у этого класса нет переменной с именем header_model
.
. Для ссылки на контроллер используйте get_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;
}
Не является частью вашей проблемы, но я хотел бы отметить, что вам не нужна функция __construct()
в MY_Model
.Если дочерний класс не выполняет инициализацию в конструкторе, нет необходимости создавать конструктор только для вызова parent::__construct();
.PHP обнаружит, что конструктор родительского класса выполнит его автоматически.