|
11 / 11 / 13
Регистрация: 25.04.2012
Сообщений: 1,163
|
||||||
Как можно оптимизировать такой код?11.04.2018, 21:11. Показов 2743. Ответов 29
Метки нет (Все метки)
Очень много сходств как правильно было бы это сократить?
0
|
||||||
| 11.04.2018, 21:11 | |
|
Ответы с готовыми решениями:
29
Можно ли оптимизировать такой запрос? Как можно оптимизировать код? Как можно оптимизировать код? |
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
| 12.04.2018, 16:35 | |
|
andr-xw, он не становится ненужным. Таких дополнительных методов на практике будет крайне мало, нп делать же на каждый метод вспомогательным. И param converter делает еще 1 удобную вещь - 404 при отсутствии сущности.
0
|
|
|
123 / 77 / 33
Регистрация: 05.03.2013
Сообщений: 449
|
||
| 12.04.2018, 18:45 | ||
|
Jewbacabra, только это не вспомогательный метод, это обычный метод бизнес логики, он может даже отдельным сервисным классом реализовываться.
0
|
||
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
| 12.04.2018, 20:27 | |
|
andr-xw, вот только бизнес логика оперирует сущностями. И сервисы должны оперировать ими. На айди тайпхинты не добавишь. Если надо вдруг возвращать 410 нужно один раз реализовать свой сервис получения usera и использовать его в свреи param converter. И это не "размазывание", а разбиение каждому сервису по своей зоне ответственности.
Вот с param converter на практике ни разу проблем не возникло, с переиспользованием все было отлично. А вот без него были не то что проблемы, но некоторые неприятности доставил. Добавлено через 32 минуты И гибкость именно в том и проявляется, что есть несколько небольших сервисов и их можно легко комбинировать между собой добиваясь различного результата. Может 410 нужно возвращать только для одних контроллеров, в других не нужно. Комбинируя конвертеры будет гораздо легче добиться этого, чем с монолиьным сервисом который работает лишь с ид и нуждается во все большем числе завистмостей чтобы различные ситуации разрулить
0
|
|
|
11 / 11 / 13
Регистрация: 25.04.2012
Сообщений: 1,163
|
||||||
| 12.04.2018, 21:43 [ТС] | ||||||
|
а как с assert'a получать нормальную ошибку вместо такой
0
|
||||||
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
| 12.04.2018, 21:57 | |
|
0
|
|
|
11 / 11 / 13
Регистрация: 25.04.2012
Сообщений: 1,163
|
||||||
| 13.04.2018, 09:08 [ТС] | ||||||
|
Jewbacabra, правильно почему вместо constraint'a notBlank вылетает sql exception
Добавлено через 35 минут С валидацией и выводом ошибок разобрался, Как быть с полями как пример при создании юзера, если я хочу логику проверок и.т.д вынести в сервис и это API, не использую form component, предположим у меня есть сервис user_manager и в нём функция createUser мне поля с request передавать $request->request->all и там ещё каждое поля проверять перед добавлением к сущности? Добавлено через 52 секунды или соберать сущность в контролере типо
0
|
||||||
|
183 / 110 / 44
Регистрация: 03.07.2016
Сообщений: 496
|
|
| 13.04.2018, 09:22 | |
|
0
|
|
|
11 / 11 / 13
Регистрация: 25.04.2012
Сообщений: 1,163
|
|
| 13.04.2018, 09:33 [ТС] | |
|
Borsche, что значит зря? Я же писал что это API
Добавлено через 1 минуту Как пример в Laravel есть Request validation создаешь свой валидатор подставляешь вместо Request в параметрах функции контролера и все дела
0
|
|
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
| 13.04.2018, 10:46 | |
|
sendxt, а данные приходят в виде json? Тогда я бы сделал отдельные дата классы для объектов запроса, настроил для них правила сериализации и валидации. В fos rest есть param converter, который может тело запроса сконвертить в соответствующие объекты. Также fos rest сможет их провалидировать, но при ошибках сам исключение не кинет, вместо этого добавтся новый аргумнт в action, в котором будет список ошибок валидации, и нужнл самому проверять случай если он не пустой.
1
|
|
|
123 / 77 / 33
Регистрация: 05.03.2013
Сообщений: 449
|
|||||
| 16.04.2018, 13:05 | |||||
|
Ты же хочешь переложить задачи второго сервиса (инициализация сущностей) на http-слой, добавляя ему лишнюю ответственность. А если так сильно хочется type hint во втором сервисе - можно сделать ДТО или VO, и для их создания уже юзать парам конвертер (хотя при анемичной модели, на мой взгляд, это выглядит избыточно). Никакой "универсальны сервис получения юзера" ты все равно не напишешь, если твое приложение чуть сложнее хлебушка. Потому что, например, если профиль юзера удален, то при попытке добавится в группу самому, нужно ему отдать 403, если юзера хочет добавить в группу админ группы - то 410, а если это делает модератор портала - то 201 и таки добавить юзера в группу, несмотря на то, что он удален. И тебе в любом случае придется описать все три юзеркейса, и лучше это будет сделать в разных сервисах. Правильное использование парам конвертера это: Пруфы: https://github.com/FriendsOfSy... poser.json https://symfony.com/doc/curren... rters.html А ещё ParamСonverter конфликтует с автовайрингом, появившимся ещё в версии 3.3 https://symfony.com/doc/curren... anges.html И если нужно использовать type hint, то вместо парам конвертера сенсио-экстра-бандла нужно использовать компонент argument resolver, входящий в состав HttpKernel, вот этот: https://symfony.com/doc/curren... olver.html Ну или добавлять класс в исключения. Добавлено через 14 минут
0
|
|||||
| 16.04.2018, 13:05 | |
|
Как можно оптимизировать код? Как можно оптимизировать код? Как можно оптимизировать код? Как можно оптимизировать этот код?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 30. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем
**Полевые заметки о двухнедельной совместной работе**. . .
|
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики
1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
|
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928
Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
|
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего
Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
|
|
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы
Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
|
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока
Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
|
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
|
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат»
Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
|