Пилот
даже вот так иногда группирую, в одной папке несколько хендлеров с сопутствующими командами и остальными артефактами)
Пилот
если зона ответственности хендлеров одна
The Ant
Чето у меня и правда бардак в башке с имнованием 😭 Такому нечего делать в юзкейсах как по мне. Надо куда-то уровнем повыше
Павел
Чето у меня и правда бардак в башке с имнованием 😭 Такому нечего делать в юзкейсах как по мне. Надо куда-то уровнем повыше
У тебя еще проблема в твоей идее с глаголами: в одном месте глагол - это инвокабл класс (валидатор), а в другом месте неинвокабл ДТО. Вот и разберись, что из них что, не залезая внутрь
The Ant
да, надо посидеть подумать над всем этом. Но все эти *er, *or мне пездец как не нравятся
The Ant
особенно, блять, когда на 1 ивент десяток хендлеров. И сиди думаой как это говно обозвать. Уж лучше глаголами.
Павел
особенно, блять, когда на 1 ивент десяток хендлеров. И сиди думаой как это говно обозвать. Уж лучше глаголами.
Я если честно так и не понял в чем затык. Есть ивент, есть тупйо сабскрайбер, который вызывает экшены бизнес логики, которые никак от наличия ивента не зависят. Он и так может быть
Павел
Т.е. то что вызывается ивентами, может в теории вызываться и вручную.
Павел
Приведи пример сложности
The Ant
в именовании этих экшонов, не именовать же их EventXHandler1, EventXHandler2 ... etc
Павел
Павел
Опять таки вариаций может быть много, проблемы особой не вижу
Павел
Можно сабсскрайберы более узко называть
The Ant
Мы примерно так делаем
чо не назвать ивент BrandRetailerDeactivated? И хендлер к нему DeactivateOffersWhenBrandRetailerDeactivated? 😄
The Ant
срзу понятно что этот хендлер делает
Павел
чо не назвать ивент BrandRetailerDeactivated? И хендлер к нему DeactivateOffersWhenBrandRetailerDeactivated? 😄
Ну кстати про ивенты думали 😅 Но все же делаем с суффиксами. У меня и так понятно - так как так метод сабскрайбера называется. Конечно можно было бы еще вынести, чтобы сабскрайбер был максиально тупой. Но особо тут смысла нет
Пилот
Аннотации наверное ближе к инфра
Пилот
То бишь в контроллерах-норм, в энтити-не
Павел
То бишь в контроллерах-норм, в энтити-не
У вас сущности описываются ямлом/пхп отдельно?
Пилот
Забыл как эти нововведения через хештег называются) так и не юзал их пока
Юра
Тю блин. Не знал что readonly запрещает модифицировать массив. А то я тут начал городить уже свой FrozenArray
Павел
Да, ямл
Понятненько. Ну по архитектуре профит есть теоретчиеский, практический почти нет. Опять так аттрибуты - это уже контрукции яхыка и их хоть в бизнес логике юзать.
The Ant
Аннотации наверное ближе к инфра
мессенжер и есть инфра по сути
Konstantin
Кст, аннотации в апликейшен слое - не излишек?)
старая проблема, в спринге об это сломано куча копий. в среднем, вердикт по индустрии такой что "идите в жопу, зато удобно". это ты еще не видел #[Autowire] в сервисах
The Ant
хз, норм. Лучше чем всратые интерфейсы
Пилот
Хотя иногда велью обжект конечно включает)
Павел
Ну вот да. Мы же обёртку для DateTime например в доменном слое не делаем
Ну делают для его получения, сам DateTime да, не меняют
Павел
Всякие ClockInterface
Павел
Тут в целом вопрос интересный, сам DateTime - конструкция языка. а DateTime('now') - уже инфра)
Пилот
Типа вызов когда сам?
Павел
Мы зависим от системы и получаем время машины на которой расположены
Пилот
А, типа может в системе быть неправильно выставлены часы, и такой вызов не гарантирует реального времени в мире, тип того?
Павел
А, типа может в системе быть неправильно выставлены часы, и такой вызов не гарантирует реального времени в мире, тип того?
Нет, типо что наша система зависит от внешних факторов. Какая разница сходили мы за временем в БД или внутри машины?
Пилот
Но ведь datetime-now не все равно что например открыть стрим фс или пайпы системные или там ехес команды системной сделать?
Павел
Павел
При этом сознательно
Пилот
Ну это да, надо скрыть за интерфейсом тогда
Павел
Ну это да, надо скрыть за интерфейсом тогда
Ну вот поэтому делаютс всяке Clock->now() - это и тестировать можно
Dmitry
если суть - действие, почему не назвать его действием?
Называть желательно не сами классы, а что этот код из себя представляет. Если классом делают сущность или значение, то обычно это существительное (Клиент, Комната, Координата) Если это команда, то можно глаголом-приказом (СбросьПароль, ЗабаньСпамера). Если штука вроде саги, которая описывает процесс, то назвать самим процессом (ОформлениеЗаявки, БронированиеКомнаты). Если это политика в виде слушателя события, то можно глаголом (ПодписатьНаРассылкуПослеПервойОплаты) или существительным (ПодпискаНаРассылкуПослеПервойОплаты). Если это событие, то глаголом в совершенной форме в прошедшем времени (УспешноОплачен). Если классом пишут процедуру или функцию, то удобно либо класс глаголом и метод __invoke, либо класс существительным и метод глаголом.
Павел
Называть желательно не сами классы, а что этот код из себя представляет. Если классом делают сущность или значение, то обычно это существительное (Клиент, Комната, Координата) Если это команда, то можно глаголом-приказом (СбросьПароль, ЗабаньСпамера). Если штука вроде саги, которая описывает процесс, то назвать самим процессом (ОформлениеЗаявки, БронированиеКомнаты). Если это политика в виде слушателя события, то можно глаголом (ПодписатьНаРассылкуПослеПервойОплаты) или существительным (ПодпискаНаРассылкуПослеПервойОплаты). Если это событие, то глаголом в совершенной форме в прошедшем времени (УспешноОплачен). Если классом пишут процедуру или функцию, то удобно либо класс глаголом и метод __invoke, либо класс существительным и метод глаголом.
А вот это уже интересно, что есть кто-то кроме муравья, поддерживающий глагол :) Но звучит норм. Хотя в итоге, все сводится к инвоку и запихать под классом функцию. ПодписатьНаРассылкуПослеПервойОплаты - почему это не метод у политики ? ПолитикаПодписки, ПоликаОплаты.
Dmitry
Как с обсуждали в https://t.me/phpyhtelka/146849
Павел
Как с обсуждали в https://t.me/phpyhtelka/146849
Чет там ссылка на генератор только. К вопросу длинного нейминга вопроса нет, вопрос почему так класс назван
Павел
Если политика всего одну операцию делает, то нет смысла её смешивать в один класс с другими методами
Если политика делает одну операцию, у вас уже политика в разговоре - существительное. Ну короче хз, но довольно интересно что вы это поддержали, значит муравей не одинок, и такое имеет место быть "возможно"
Павел
ПодписатьНаРассылкуПослеОплаты ПодпискаНаРассылкуПослеОплаты не настолько велика разница
Ну на столько же не велика, где скобки, пробелы, переносы ставить в функциях и классах, но стараются стремиться к одному стилю.
Павел
Но деф засчитан :)
Павел
Дополнил первоначальный ответ
Во всем этом, имхо, только о дто можно подумать (коей явяются команды), потому что это еще как то вкладывается в НекийХандлер->выполни(ЗабаньСпамера)
Павел
Ну и ивенты, тоже ЮзерСоздан . Короче структуры и то, и то
Dmitry
Ну на столько же не велика, где скобки, пробелы, переносы ставить в функциях и классах, но стараются стремиться к одному стилю.
Это бизнесовые наименования, а не технический кодстайл про скобки и пробелы. Так что это определяется совсем другими договорённостями.
Павел
Это бизнесовые наименования, а не технический кодстайл про скобки и пробелы. Так что это определяется совсем другими договорённостями.
Договоренности о сделать название класса существительным или глаголом к бизнесу не имеют отношения.
Nikolay
Здравствуйте коллеги симфовчане
Nikolay
если есть у кого то компетенция помочь, гугл пока ничего не дал или возможно не там ищу
Konstantin
лол
Павел
🤣🤣🤣
Павел
набирает компитенцию на лету))
Konstantin
да просто не там ищет!
Nikolay
забанило чтоли
Павел
кикнуло)
Павел
я ничего не понял)
Konstantin
1) для начала попробовать dql
Konstantin
не знаю, но с таким уровнем вопросов советую пойти в доку, а не в чат
Konstantin
и читать ее до посинения, пока не наступит понимание, потому что сложно объяснять что-то человеку, находящемуся на таком уровне понимания вопроса
Konstantin
соболезную в таком случае, можно в спортлото пожаловаться на доку доктрины
Сергей
https://github.com/beberlei/DoctrineExtensions/blob/master/src/Query/Mysql/IfElse.php
Ibray
Можно почитать про условия в sql
Nikolay
условие в sql запросе сделал
Ibray
Т.е. решили? Или про вы про if говорите?
Nikolay
запрос работает если его создать напрямую