What are PHP traits and when should you use them?

What are PHP traits and when should you use them?

What are PHP traits and when should you use them?

Question

What are PHP traits and when should you use them?

Answer

A trait is a group of methods intended for reuse in multiple classes. Traits help avoid code duplication when classes don't share a natural inheritance hierarchy.

trait Timestampable
{
    private ?DateTime $createdAt = null;
    private ?DateTime $updatedAt = null;

    public function setCreatedAt(): void
    {
        $this->createdAt = new DateTime();
    }

    public function setUpdatedAt(): void
    {
        $this->updatedAt = new DateTime();
    }

    public function getCreatedAt(): ?DateTime { return $this->createdAt; }
    public function getUpdatedAt(): ?DateTime { return $this->updatedAt; }
}

trait SoftDeletable
{
    private ?DateTime $deletedAt = null;

    public function softDelete(): void { $this->deletedAt = new DateTime(); }
    public function isDeleted(): bool  { return $this->deletedAt !== null; }
}

class Article
{
    use Timestampable, SoftDeletable; // use multiple traits
}

class Product
{
    use Timestampable; // reuse just what you need
}

When to Use Traits

  • Shared behaviour across unrelated classes (logging, timestamps, soft delete)
  • When multiple inheritance would otherwise be needed
  • When extracting to a base class would create an unnatural hierarchy

When NOT to Use Traits

  • Don't use traits to share business logic — prefer services or composition
  • Avoid traits with state that conflicts between classes
All Comments