Я пытаюсь загрузиться, помощник cookie в моем рычаге pre_controller для 'помнят меня' функция на нашем сайте. Я думал, что создание экземпляра CI возражает с $ci = и get_instance (); позволил бы мне доступу к загружающимся помощникам, но дело обстоит не так.
Мысли?
$ci =& get_instance();
$ci->load->helper('cookie');
// does not load
Хук pre_controller
выполняется до того, как суперобъект будет полностью построен, поэтому get_instance ()
не может работать - статический объект, на который он возвращает ссылку, еще не был инициализирован.
Вместо этого рассмотрите возможность использования ловушки post_controller_constructor
; конструктор вашего контроллера будет выполнен, и суперобъект CI будет доступен для использования.
Проблема с post_controller_constructor в том, что он запускается после конструктора (как ни странно), и если вы используете конструкторы Controller для многих вещей, это может быть проблемой.
Если это не проблема для вас (ваш помощник не повлияет на что-либо, запущенное или загруженное в ваших конструкторах), честно говоря, если это проблема, у вас есть два решения.
Создайте MY_Controller и добавьте настраиваемую точку перехвата.
class MY_Controller расширяет Controller
{
function MY_Controller ()
{
parent :: Controller ();
$ GLOBALS ['EXT'] -> _ call_hook ('pre_controller_constructor');
}
Обратите внимание, что если вы используете CodeIgniter 3.0 или новее, функция _call_hook
был переименован в call_hook
.