Определить проблему в контроллере CodeIgniter

Я создал базовый контроллер, который расширяют все мои контроллеры …

class PublicController extends CI_Controller { private $js = array(), $css = array(), $templateVars = array(); public function __construct () { parent::__construct(); //register account $this->templateVars['account'] = ($this->account = $this->modelFactory('account')); // enable profiler for development if (ENVIRONMENT == 'development') { $this->output->enable_profiler(true); $this->addJs('jquery-min-1.5.2'); } else { $this->addJs('http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js'); } $this->addCss('base'); $this->addJs('base'); } /** * Loads and initiates models */ protected function modelFactory ($model, $input = array()) { $this->load->model($model); $class = $model.'Model'; return new $class($input); } 

Проблема здесь в том, что я получаю ошибку. Fatal error: Maximum function nesting level of '100' reached, aborting! in C:\Program Files (x86)\EasyPHP-5.3.6.0\www\site.com\system\core\Common.php on line 328 Fatal error: Maximum function nesting level of '100' reached, aborting! in C:\Program Files (x86)\EasyPHP-5.3.6.0\www\site.com\system\core\Common.php on line 328

Когда я прокомментирую строку $this->templateVars['account'] = ошибка уходит … как это происходит?

В качестве обходного пути вы можете добавить это как первое утверждение в свой метод __construct:

  global $onlyonce; if ($onlyonce++) return; 

Это предотвратит создание нескольких экземпляров вашего контроллера. Не зная остальной части вашего кода или CodeIgniter, скорее всего, предполагается, что ваш класс модели сам создает экземпляр вашего контроллера. Это, в свою очередь, создает еще одну модель.

Трассировка профайлера xdebug расскажет вам больше. Это недостаточно для того, чтобы рассказать вам точную причину.

@webnet это случилось со мной в CI с модулями (HMVC). Мой контроллер имел то же имя файла модели. Изменение названия сделало трюк.