BSCheshir
(Bscheshir)
1
Предыстория. 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);
?
linuxoid
(About Linux)
2
На сайте PHP, сказанно, что использование трейтов с конструкторами и другими "магическими" методами, не хорошая практика.
Конкретно ваша ошибка, связанна с этим:
Т.е. трейты, при наследовании, всё ещё принадлежат к parent-классу, и поэтому у вас такая ошибка.