Исправляем Fatal error: Maximum function nesting level of 100 reached, aborting!

Fatal error: Maximum function nesting level of 100 reached, aborting!
Буквально недавно во время одного из этапов тестирования выловили ошибку Fatal error: Maximum function nesting level of ‘100’ reached, aborting! Погуглив, понял что дело в конфигурации xdebug’a.

И все было бы прекрасно, ведь описанное решение было очень простым. Нужно было лишь в php.ini задать значение параметра побольше, например 200.

xdebug.max_nesting_level = 200

Но вот незадача: на сервере, на котором проводились тесты, xdebug не стоял. Поэтому нужно было решать проблему по-другому. Взглянув на строку, которая провоцировала проблему, я нашел решение.

Все дело было в модели, точнее в методе. Модели в данном приложении реализованы с применением паттерна «Active Record», и наследуются от Zend_Db_Table_Abstract. Так вот, так вышло, что в модели уже был описан метод insert (точнее переопределен) — это и вызвало ошибку.

class Default_Model_AccountRequest extends Zend_Db_Table_Abstract {

    protected $_name = 'account_requests';

    public function insert(array $_data){
        return $this->insert($_data);
    }

Метод можно было смело удалять. Вот так.

Stas Kuryan

Web developer. Перфекционист в написании кода.

3 комментария

  1. Виктор     

    Спасибо, точно это я и искал. А то пишу движок для своего сайта и такаяя фигня выползла =)

  2. Юлий     

    Можете более точно написать как провели устранение ошибки:?
    xdebug.max_nesting_level = 200 не помогло

    «Все дело было в модели, точнее в методе. Модели в данном приложении реализованы с применением паттерна «Active Record», и наследуются от Zend_Db_Table_Abstract. Так вот, так вышло, что в модели уже был описан метод insert (точнее переопределен) — это и вызвало ошибку.» — не нашёл у себя такого.

    • Stafox        Автор

      Посмотрите нет ли у Вас непрерывной рекурсии.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *