Infinite loop в CActiveRecord

Уже исправленные репорты или принятые предложения
Закрыто
Nodge
Сообщения: 26
Зарегистрирован: 2011.01.02, 23:17

Infinite loop в CActiveRecord

Сообщение Nodge »

При вызове родительского конструктора из потомков CActiveRecord происходит вот такая штука:

Код: Выделить всё

( ! ) Fatal error: Maximum function nesting level of '100' reached, aborting! in /framework/base/CModel.php on line 60
Call Stack
#    Time    Memory    Function                                            Location
1    0.0005    346928    {main}( )                                            ../index.php:0
2    0.0051    1285136    foo->__construct( $bar = 'test', $scenario = ??? )    ../index.php:28
3    0.0051    1285184    CActiveRecord->__construct( $scenario = 'insert' )    ../index.php:24
4    0.0051    1285216    CActiveRecord->getMetaData( )                        ../CActiveRecord.php:62
5    0.0051    1285264    CActiveRecord::model( $className = 'foo' )            ../CActiveRecord.php:387
6    0.0051    1286384    foo->__construct( $bar = NULL, $scenario = ??? )    ../CActiveRecord.php:371
7    0.0051    1286432    CActiveRecord->__construct( $scenario = 'insert' )    ../index.php:24
8    0.0051    1286464    CActiveRecord->getMetaData( )                        ../CActiveRecord.php:62
9    0.0051    1286512    CActiveRecord::model( $className = 'foo' )            ../CActiveRecord.php:387
10    0.0051    1287512    foo->__construct( $bar = NULL, $scenario = ??? )    ../CActiveRecord.php:371
11    0.0051    1287560    CActiveRecord->__construct( $scenario = 'insert' )    ../index.php:24
Код для примера:

Код: Выделить всё

class foo extends CActiveRecord {
    public function __construct($bar, $scenario = 'insert') {
        parent::__construct($scenario);
        // do some stuff
    }
}

$foo = new foo('test'); 
По-моему это баг. Или нет?
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: Infinite loop в CActiveRecord

Сообщение Ekstazi »

Это ваш баг. Фреймворк здесь не причем, гляньте исходник AR сперва. В вашем классе необходимо проверять контекст: если первый параметр null то scenario передавать не надо.
Nodge
Сообщения: 26
Зарегистрирован: 2011.01.02, 23:17

Re: Infinite loop в CActiveRecord

Сообщение Nodge »

Ekstazi писал(а):Это ваш баг. Фреймворк здесь не причем, гляньте исходник AR сперва. В вашем классе необходимо проверять контекст: если первый параметр null то scenario передавать не надо.
Точно. Поторопился создавать тему, урок усвоил. :)
Спасибо за быстрый ответ.
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: Infinite loop в CActiveRecord

Сообщение Ekstazi »

Я сам на этом попался пару раз, но до тем тьфу тьфу не дошло, ничего страшного, пусть будет думаю, чтоб другие знали ответ.
Закрыто