Size: a a a

2021 April 16

C

CvekCoder in symfony
Почему не нужно?
источник

SM

Sergey Milegov in symfony
Я как-то смотрел симфони кеш компонент.. вопросы про трейты снимаются сами собой
источник

АЯ

Андрей Ява in symfony
Потому что это не его ответвенность.
источник

Ш

Шурик in symfony
если нужно - почему оно не в самом классе?
источник

АЯ

Андрей Ява in symfony
Абстрактные классы норм в одном единственном случае - реализация STI.
источник

АЯ

Андрей Ява in symfony
Наследование вцелом чаще всего используется не как расширение существующего поведения, а как способ прокинуть неявную зависимость или сторонний функционал. По этому оно зло, но  оговоркой.
источник

АВ

Александр Вологжанин... in symfony
Трейты нужны и придумывались только как альтернатива множественного наследования, это их основное предназначение. Если вы не используете наследование, то вам и множественное наследование не нужно будет
источник

Ш

Шурик in symfony
опять 25
причем тут трейты к наследованию?
источник

C

CvekCoder in symfony
Вот есть у меня интерфейс, у него есть поведение, которое описано в трейье. И я собираю свой объект через реализацию интерфейсов. При этом мне не хочется везде писать шаблонный код - я использую трейт.
Ожидаю что вы скажете что это плохо, поэтому сразу опишите почему
источник

АЯ

Андрей Ява in symfony
Возможно они придумывались как костыль для множественного наследования, но в итоге их используют как добавление стороннего  функционала классу.
источник

Ш

Шурик in symfony
а почему ты поведение описал в трейте? почему не в классе?
источник

C

CvekCoder in symfony
Почему стороннего? Что такое "сторонний функционал"?
источник

АЯ

Андрей Ява in symfony
Ааа, это интересная любопытная штука.
источник

C

CvekCoder in symfony
Если оно только тут, то в классе. А если у меня много разных классов, имеющих это поведение, то в трейте
источник

АВ

Александр Вологжанин... in symfony
Это их неправильное использование и всего-то
источник

АЯ

Андрей Ява in symfony
Смотри. Если один и тот же кусок кода у тебя присутсвует в множестве классов. Не важно - прокинут он через трейт, унаследован от абстракта или скопипасченый руками.
Значит этот кусок кода несёт самостоятельную ответвенность и должен быть вынесен в отдельный хендлер и при необходимости прокинут как зависимость
источник

Ш

Шурик in symfony
почему в трейте, а не в отдельном классе, в котором только это поведение?
источник

C

CvekCoder in symfony
Вот нужно мне чтобы сущность была "timestampable". Причем тут отдельный класс
источник

Ш

Шурик in symfony
при том, что это же отдельное поведение
источник

АЯ

Андрей Ява in symfony
Ну и накинь интерфейс.
источник