Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти
Інше
Події Про нас
Middle PHP 6

Яка різниця між Traits та Interfaces в контексті Laravel?

  • Interface - це контракт: перелік методів, які клас зобов'язаний реалізувати. Не містить реалізації.
  • Trait - механізм повторного використання коду: набір готових методів, які «вмішуються» в клас (горизонтальне перевикористання).
interface Loggable { public function logChannel(): string; }

// реалізація для багатьох моделей
trait HasUuid
{
    public static function bootHasUuid(): void { /* ... */ }
}

class Order extends Model implements Loggable
{
    use HasUuid;
    public function logChannel(): string { return 'orders'; }
}

У Laravel трейти всюди: SoftDeletes, HasFactory, Notifiable. Інтерфейси («контракти») дають змогу підміняти реалізації через контейнер.

Схожі питання