Size: a a a

2021 June 28

MK

Maxim Kurchinskyj in Laravel Pro
Нет
источник

Бп

Безумно первыйй... in Laravel Pro
спс
источник

А

Антон in Laravel Pro
Реши мне эту задачу трейтами, пожалуйста


abstract class A {}
abstract class B {}

final class C extends A, B {}

function acceptB(B $b): void
{
}

function acceptA(A $a): void
{
}

acceptB(new C());
acceptA(new C());
источник

MK

Maxim Kurchinskyj in Laravel Pro
Я не говорил что все можно решать трейтами полноценно
источник

A

Adel in Laravel Pro
Ничего не надо ими решать
источник

A

Adel in Laravel Pro
Их надо избегать
источник

А

Антон in Laravel Pro
Ты сказал, что трейты – это как вариант замена наследованию. Не замена. Ни как вариант, ни вообще. Что такое класс? Это тип. Наследование классов – это наследование типов. Трейты на типы не влияют. Отсюда невозможны ни lsp, ни все остальное. Трейты – копипаста.
источник

ДК

Дмитрий Кожанов... in Laravel Pro
Проблема в том что конкретного ответа нет ) Если на собесе скажешь нет - тебе напомнят про трейты, если скажешь да - тебе напомнят что трейты это просто альтернатива множественному наследованию, но в пыхе его как такового нет )
источник

А

Антон in Laravel Pro
Если тебе собеседующий скажет, чтто трейты – альтернатива мн. наследованию, я бы ушел с собеса.
источник

В🚙

Виктор 🚙 in Laravel Pro
Для чего нужны трейты?
источник

А

Антон in Laravel Pro
interface A {}
interface B {}
interface C extends A, B {}

final class E implements C {}
final class D implements A, B {}

function acceptA(A $a): void {}

acceptC(new E());
acceptC(new D());


Вот мн. наследование в пхп.
источник

В🚙

Виктор 🚙 in Laravel Pro
Лара ими вся обмазана
источник

ДК

Дмитрий Кожанов... in Laravel Pro
Это множественная имплементация
источник

А

Антон in Laravel Pro
У тебя D реализует несколько типов и может быть применен там, где ждут A, и там, где ждут B.
источник

y

yu2ry in Laravel Pro
а мне не нрав это
источник

ДК

Дмитрий Кожанов... in Laravel Pro
Избавление от копипасты как предполагалось.
источник

ДК

Дмитрий Кожанов... in Laravel Pro
Но в интерфейсах нет реализации, а наследование нужно для расширения реализаций. Иначе не было бы интерфейсов
источник

А

Антон in Laravel Pro
trait AuthorizesRequests
{
  public function authorizeResource(...)
  {
    $this->middleware($middlewareName, $options)->only($methods);
  }
}


Заебись избавился. Где мне взять ф-цию middleware()?
источник

A

Andrew in Laravel Pro
А один интерфейс не расширивается за счет другого ?
источник

ДК

Дмитрий Кожанов... in Laravel Pro
интерфейс и реализация разные вещи
источник