Trait là một cơ chế để tái sử dụng code qua nhiều class không có quan hệ kế thừa. Vì PHP chỉ cho phép kế thừa đơn, trait cung cấp cách chia sẻ method (và thuộc tính) theo chiều ngang — một dạng tái sử dụng code "theo kiểu kết hợp", giống mixin.
Vấn đề mà trait giải quyết
PHP kế thừa đơn — một class chỉ extend được MỘT cha. Nhưng bạn thường muốn
chia sẻ CÙNG các method qua các class không liên quan (ví dụ logging, timestamp).
Nhân bản code là dở; trait cho phép tái sử dụng nó mà không cần kế thừa.
