Trait — переиспользуемый набор методов/свойств, встраиваемый в классы через use, без классического множественного наследования.
Разбор
- Конфликты методов решают insteadof/as.
- Трейты не заменяют дизайн через композицию всегда.
- Видимость можно адаптировать.
- Следите за скрытой связанностью.
Пример
trait Loggable { public function log(string $m): void { echo $m; } }
Итог
Trait подмешивает поведение; конфликты и связность контролируйте явно.