Что такое трейты (traits)?

Ответ

Трейты - механизм повторного использования кода без наследования (горизонтальное переиспользование):

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

trait SoftDeletable {
    public ?DateTime $deletedAt = null;
    public function softDelete(): void {
        $this->deletedAt = new DateTime();
    }
}

class User {
    use Timestampable, SoftDeletable;
}

Трейты не нарушают SOLID если используются для переиспользования инфраструктурного кода. Проблемы: неявные зависимости, конфликты имен, сложность отладки.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.