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".
Traits allow reusing methods in multiple unrelated classes without inheritance.
- Define with
trait Logger { public function log($msg) { echo $msg; } }. - Use in any class:
class User { use Logger; }andclass Product { use Logger; }now both have the log method. - Traits solve the problem of code duplication when multiple classes need the same functionality but don't share a parent.
- They're like "horizontal" reuse versus inheritance's "vertical" reuse.