trait은 상속으로 관련되지 않은 여러 클래스 간에 코드를 재사용하기 위한 메커니즘입니다. PHP는 단일 상속만 허용하므로, trait은 메서드(와 프로퍼티)를 수평적으로 공유하는 방법을 제공합니다 — 믹스인(mixin)처럼 "조합적인" 코드 재사용의 한 형태입니다.
trait이 해결하는 문제
PHP는 단일 상속 — 클래스는 단 하나의 부모만 확장할 수 있음. 하지만 무관한 클래스 간에
같은 메서드를 공유하고 싶을 때가 많음 (예: 로깅, 타임스탬프).
코드를 중복하는 것은 나쁨; trait은 상속 없이 재사용하게 해 줌.
trait 정의하고 사용하기
{
?DateTime = ;
{
->createdAt = ();
}
{
->createdAt;
}
}
{
{
. :: . ;
}
}
{
, ;
}
= ();
->();
->();
