![Yii framework (framework) Yii framework](https://images-on-off.com/images/144/yiiframework-c3d9bf69.jpg)
Повторне використання коду завжди вважалося (і вважається) хорошим тоном і сучасні ЯП пропонують нам досить широкий набір можливостей це здійснити. Сьогодні поговоримо про особливості використання поводжень і трейтов в Yii2.
Ще в першій версії Yii framework мені дуже сподобалися концепція з поведінками. Я вважаю, що в той час це було прекрасним рішенням. Але з виходом PHP 5.4.0 їх почали витісняти трейти. Зараз в більшій кількості випадків я використовую саме їх. Зараз розповім що і в яких випадках використовую я.
- Вони швидше. Це ж конструкція мови.
- При їх використанні витрачається менше пам'яті.
- Можна описати статичні методи і поля.
- Прямо не можна навісити на події свій обробник. Але це, як правило, вирішується аттачем на події в методі init (). Це спрацює якщо даний метод не описаний в "класі-батьку".
- У PhpStorm 8 неправильно підсвічується синтаксис
- Події yii навішуються без праці.
- PhpStorm 8 коректно підсвічує синтаксис.
- Не можна описати статичні методи і поля.
- Повільніше, "жирніше" по пам'яті.
Приклад додавання обробників подій в trait
Зазвичай я створюю метод attachEventHandlers () в якому навішують на модель необхідні обробники.
А в методі init () просто його викликаю.
Це працює, якщо в батьківському класі не переопределяется init (). В іншому випадку, просто додаю в нього виклик $ this-> attachEventHandlers ().