The Ant
сначала аргументируй своё высказывание, а потом я тебе доклад дам по теме
Alexander
Сначала перестаньте тыкать не знакомым людям. Вы сюда с вопросом пришли, как выстрелить себе в ногу. Вам опытные коллеги предлагают в ногу себе не стрелять. Вы хамите и что-то требуете.
The Ant
сначала фильтруй свой базар про кочергу и голову
Alexander
))
Alexander
Сначала сходи нахуй, а потом говори другим что им делать.
The Ant
я вот уверен что ты не пользовался таким подходом. и не знаешь всех тонкосей и нюасов. Но почему-то считаешь нужным выбрасывать в окно. Офигенно чо
Alexander
Вот такие агрессивные мудаки придумывают свои "модули", потом начинают раскарячиваться впихивая несколько ядер (или одно с разными именами), а потом сиди ночами разбирайся, что было в голове в этого мудака. Ребята которые пишут по ДДД вопросов в чатах про конфигурацию DI не задают. Они знают что и зачем делают. Вопросы задают зеленые ребята, насмотревшись докладов. В голову бить надо за нарушение бест-практис. Чтобы нарушать правила, нужно их хорошо знать и понимать почему они появились. Если у вас 20-30+ человек в команде, 1000+ ентити и т.д. и т.п. я прошу прщения за свою категоричность. Но мне почему то кажется что у вас 1 разработчик на проекте, который пока еще даже не научился с другими людьми разговаривать, не то что код писать.
The Ant
🤣🤣🤣 хосспаде, мамкин эксперт в треде. Чего ты ожидал когда начал нести чушь про кочергу, голову и выкинуть в окно?
The Ant
Я вот в отличие от тебя могу разложить проект так, как мне нужно, а не как в масс гайдах для дебичей рассказано.
Alexander
А еще можешь дать себе в голову кочергой и выпрыгнуть в окно :)
Alexander
Конфиг то написал? Может он )
The Ant
само собой
The Ant
прочти вопрос, балбес. Там ответ есть. Просто хочется по красивше.
Shokha
$sql .= $queryBuilder->orderBy('is_favourite, price')->getSQL(); $pagination = $this->paginator->paginate($sql, $page, $size); как можно использовать string SQL в пагинаци? если у меня голый скл как передать к пагинатору
Юра
А мне нравится как раз идея группировки по логическим единицам а не по типу контролеллер, энтити и т.д.
Юра
Не вижу в ней ничего плохого, наоборот удобно
Юра
Как раз симфони вей говно
Юра
Это удобнее с точки зрения авторов фреймворка но не тех кто его использует
Юра
Особенно это заметно становится когда тебе надо сделать систему плагинов, чтобы установкк и удаления плагина решалась удалением папки плагина
A
One of listeners must count and slice given target ругает в таком виде
Никак. Можете написать свой подписчик события, который будет модифицировать $target (в вашем случае - строку sql)
The Ant
иначе придется костылить всякую хрень по типу проверок, установлены ли лимиты, через поиск подстроки
Shokha
никак наверное, юзай билдер для таких целей
У меня запрос большой там есть with tempRecords as (SQL)
The Ant
🤷‍♂️
Юра
Добавляй к запросу лимит оффсет
Юра
Регулярными выражениями
Юра
Не понятно что за задача у тебя
Alexander
Особенно это заметно становится когда тебе надо сделать систему плагинов, чтобы установкк и удаления плагина решалась удалением папки плагина
Систему плагинов можно сделать очень по разному, особенно если не придумывать искусственное ограничение с удалением плагина через удаление папки. Плагин может и в базе чего нибудь добавлять, и при удалении возможно подчищать за собой. Есть бандлы, флекс, есть компайлер пассы и т.д. вариантов куча. А вот онбординг новых бойцов затрудняется, конфигурация радикально усложняется, правила для deptrac из тривиальных превращаются в лапшу и т.д. и т.п. со всеми остановками. Не утверждаю что структуру сифони никогда нельзя менять, но аргумент "мне так удобнее" слегка сомнителен.
Юра
А как можно подключить роуты из бандла автоматически чтобы не править когфиги
Юра
Роут лоадер писать?
Юра
Или достаточно положить рядом файл и кернел подключит?
The Ant
Систему плагинов можно сделать очень по разному, особенно если не придумывать искусственное ограничение с удалением плагина через удаление папки. Плагин может и в базе чего нибудь добавлять, и при удалении возможно подчищать за собой. Есть бандлы, флекс, есть компайлер пассы и т.д. вариантов куча. А вот онбординг новых бойцов затрудняется, конфигурация радикально усложняется, правила для deptrac из тривиальных превращаются в лапшу и т.д. и т.п. со всеми остановками. Не утверждаю что структуру сифони никогда нельзя менять, но аргумент "мне так удобнее" слегка сомнителен.
типичный симфони проект в мане для новичков ориентирован на очень маленькое приложение. Даже пресловутый блог в нем будет будет сделать сложно, т.к. намешается в кучу много всего. Сложнее въехать как раз в кучу говна, которая ровным слоем размазана по директориям проекта. Когда тебе надо открыть условные статьи, и ты пошел шарить где же у тебя контроллеры, где же у тебя сущности и обработчики форм. Вместо того, чтобы просто открыть папочку "статьи" и начать работать с этим разделом.
The Ant
сложности с конфигурацией кстати ноль. Есть моменты где чуть чуть неудобно, да. Но сложностей = 0
Alexander
А как можно подключить роуты из бандла автоматически чтобы не править когфиги
Я бы не хотел чтобы бандл, или плагин, автоматически мне роуты подключал. Можно лоадер, можно при установке плагина добавить файлик в config/routes/{pluginName}.yaml. Не уверен, но скорее всего можно и при компиляции кеша добавить своих роутов. Не очень понятен кейс когда нужна именно автоматическая конфигурация роутов. Я видел и такое, что плагины работали вне роутинга симфони, вернее роутинг плагина отрабатывал до роутинга симфони. Но это, с моей точки зрения, уже совсем зашквар.
Юра
ну надо чтобы плагин мог добавить свои контроллеры и роуты соответственно
Юра
вот просто думаю как это лучше сделать
Alexander
Плагины подразумевают некий внешний код, как быть если адрес понравится разным плагинам и они попробуют занять например /subscribe/ адрес?
Юра
уникальным слагом
Alexander
Я думал думал и отказался от плагинов, у меня внешнего кода нет :)
Юра
префиксом
Alexander
Ну да, костыли так или иначе.
Юра
ну либо писать свой аля плагин контроллер, в который будем приходить плагин и экшон и этот контроллер уже будет форвардить дальше
Юра
можно даже через $response = $this->forward('App\Controller\OtherController::fancy', [ 'name' => $name, 'color' => 'green', ]);
Юра
тогда и в тулбаре будет красиво отображаться даже
Alexander
Роутинг внутри контроллера тоже костыль как по мне )
Юра
ну вот таки дела
Юра
кругом костыли
Alexander
кругом костыли
если есть процесс установки/удаления плагина - напихать ямлов куда надо не большая проблема: причем эти ямлы можно при желании отредактировать и руками разрулить конфликты
The Ant
ты не знал? нынче уже не модно конфиги в ямлах держать
Alexander
установка может и автоматически запускаться, но меня в туалет без vpn не выпускают, какая уж там автоматическая установка плагинов
Alexander
ты не знал? нынче уже не модно конфиги в ямлах держать
Мальчик, иди на улице погуляй, подыши свежим воздухом, может полегчает. Насмотрятся докладов, а потом глупости пишут.
Юра
The Ant
чо ты уцепился за эти плагины? распихать связанную единым смыслом логику по модулям это просто здравая идея. Будет намного легче очертить границы этих модулей и стараться не пересекать их ни под каким предлогом. В итоге у тебя код будет в разы чище, чем то что ты делаешь сейчас.
Юра
от так надо сейчас
Юра
Я согласен. Но так не принято
Юра
Намного важнее что у тебя все контроллеры рядом со всеми контроллерами, и энтити рядом с энтитями
Alexander
от так надо сейчас
Надо или модно? ) Мне честно безразличен формат конфигурации, что ямл что xml что пхп.
Юра
)
Юра
Ямл можно спокойно прочитать, поменять и сдампить. Проверните такое с пхп конфигом )
The Ant
в пхп конфигах работает автокомплит
The Ant
переименование, перенос классов - всё включено
Юра
На самом деле симфа разве запрещает тебе распиххать модули твои по бандлам со своими контроллерами, шаблонами и т.д.
Юра
По-помему это обычный подход
Юра
в пхп конфигах работает автокомплит
в ямбле тоже работает автокомплит
Юра
симфони плагин
Юра
не всегда но работает иногда )
The Ant
да, но мы привыкли уже к тому, что 1) бандлы юзать для инфраструктуры; 2) Бандлы в репо в пакетах отдельно;
Alexander
чо ты уцепился за эти плагины? распихать связанную единым смыслом логику по модулям это просто здравая идея. Будет намного легче очертить границы этих модулей и стараться не пересекать их ни под каким предлогом. В итоге у тебя код будет в разы чище, чем то что ты делаешь сейчас.
Вот и поколение ребят, для которых главным критерием качества является кульность. Чистая архитектура с ддд и cqrs к нам подъехали из дотнета, и там они местами (кровавый энтерпрайз, 1000+ ентити, терабайты в бд, сотни тысяч рпм и т.д.) уместны. Зачем вы тащите чужой устав в чужой монастырь мне не ясно. Нагадить можно и в модули, и в структуру симфони, структура от плохого кода не спасает от слова совсем. Начали вы не с чистоты и понятности, а с "мне так удобно". Я вам и сказал, что мудакам которые пишут код исходя из "мне так удобно", хочется дать в бубен, потому что поддерживать такое очень сложно.
The Ant
В чем сложность, объясни? в третий раз прошу.
The Ant
Ты вот долбишь одну и туже мантру "сложно сложно сложно". Расскажи в чем сложность?
Alexander
В том что вы не понимаете, что фреймворк это в первую очередь договоренности.
The Ant
Фреймворк в первую очередь это набор инструментов для создания приложений. Договоренности уже идут контрактами и к фреймворку непосредственно не относятся.
Alexander
назовите это "вася пупкин эм-вэ-цэ" и нет проблем, но вы называете это симфони, а делаете "вася пупкин эм-вэ-цэ".
Юра
В симфони так и было в начале
Юра
Был AppBundle
Юра
Рядом создавался другой бандл
The Ant
Разрабы симфони дают демо приложение. они не заставляют юзать именно эту архитектуру. Это просто демо. Как тока ты поймешь для себя это, сразу прозреешь. Что можно оказывается делать так, как тебе будет удобно.
Юра
А потом решили нахер это все и сделали все в папке src