trait с __construct и autoload()

Предыстория. Yii 1.

Подумав "а не вынести ли повторяющийся код, используя плюшки trait" создал под них папочку, подключил вроде бе


...

'application.components.traits.*',

...

даже использовал парочку без проблем… Пока не придумал вынести конструктор для парочки AR.

И тутначались проблемы - после обработки имени трейта через YiiBase::autoload($className)

приложение перенаправляется на CApplication::end()

собственно, для начала такого поведения достаточно use someTrait;




trait someTrait {

    public function __construct($scenario='insert')

    {

        return parent::__construct($scenario);

    }

}



Кто-нибудь может объяснить сие поведение?

виновата ли 437 строка return class_exists($className,false) || interface_exists($className,false);

?

На сайте PHP, сказанно, что использование трейтов с конструкторами и другими "магическими" методами, не хорошая практика.

Конкретно ваша ошибка, связанна с этим:

Т.е. трейты, при наследовании, всё ещё принадлежат к parent-классу, и поэтому у вас такая ошибка.