Trait cho phép tái sử dụng phương thức trong nhiều class không liên quan mà không cần kế thừa.
- Khai báo:
trait Logger { public function log($msg) { echo $msg; } }. - Dùng trong bất kỳ class nào:
class User { use Logger; }vàclass Product { use Logger; }thì cả hai đều có phương thức log. - Trait giải quyết vấn đề trùng lặp code khi nhiều class cần chức năng giống nhau nhưng không chia sẻ class cha.
- Chúng giống như tái sử dụng "ngang" trong khi kế thừa là tái sử dụng "dọc".