Що таке traits? Чим вони відрізняються від успадкування та інтерфейсів?
Trait — це блок методів і властивостей, який підмішується в клас в обхід одиночного успадкування PHP. Інтерфейс оголошує контракт без реалізації; успадкування дає звʼязок «є» з одним батьком; trait дає перевикористовувану реалізацію без типового звʼязку. Конфлікти між трейтами треба розвʼязувати явно через insteadof або as.