maleks писал(а):вообще непонятно зачем вы взялись переопределять магические методы у поведений.
Хотел сделать что-то вроде этого (использовал поведение, потому что нужна поддержка событий):
Код: Выделить всё
class Behavior1 extends \yii\base\Behavior
{
private $obj;
public function __get($name)
{
$objMethod = 'get' . $name . 'SomeName';
if (method_exists($this->obj, $objMethod)) {
return $this->obj->$objMethod();
} else {
return parent::__get($name);
}
}
}
Если использовать трейт, то все бы сработало. И parent::__get($name) вызвал бы __get базового класса, класса который использует этот трейт. Но в случае использования нескольких трейтов с методом __get, пришлось бы указать какой __get использовать, чтобы избежать конфликтов.
А вот чтобы использовать __get в поведении нужно костылить, что может привести к ошибкам если к модели подключены другие поведения.