Traits
Traits reuse method implementations across classes.
What it is
Traits reuse method implementations across classes.
When to use it
Use for narrowly shared behavior when composition would add little value.
Syntax
trait HasReference
{
public function reference(): string { return $this->reference; }
}Example
class Invoice
{
use HasReference;
public function __construct(private string $reference) {}
}Common mistakes
Traits hide dependencies on host properties; resolve method collisions explicitly.