169 похожих чатов

Привет, подскажите нужно ли такой контроллер выносить в сервисы ?



может где то глупо сделал, за любой совет буду благодарен )

21 ответов

6 просмотров

Я сам не совсем опытный) Но я бы не выносил, функции сами по себе небольшие. Но вот некоторые говорят, что наоборот нужно выносить, т.к обращение к модели идет

Ресурсы не надо передавать во вьюхи. view используется для возврата "html" при отрисовке страницы, а ресурсы - для json при ответе по API. Кроме этого, из того что есть, в принципе, сервис будет излишним

Макс- Автор вопроса
Макс
а окей, просто передавать обьект ?

Например: public function index() { $products = Product::query() ->with('category', 'subcategory', 'tags') ->with('preview', fn (Builder $builder) => $builder ->where('type', MediaType::Image) ->limit(1) ) ->latest() ->paginate(20); return view('Pages.Product.index', compact('products')); }

Павел
Я сам не совсем опытный) Но я бы не выносил, функ...

Выносить нужно когда в них более-менее сложная логика начинает прослеживаться. Если в запросе условно 1-5 строк, то нет смысла плодить классы ради классов.

Макс- Автор вопроса
Andrey Helldar
Например: public function index() { $products...

спасибо, понял, а совет выше был про дто, для каждой модели нужно создавать свой обьект ?

Макс
спасибо, понял, а совет выше был про дто, для кажд...

Нет, не для каждой. Вообще для моделей не нужно создавать DTO. DTO нужны для передачи данных между слоями приложения особенно когда эти данные являются неочевидными и/или содержат неструктурированные данные. Модели же вполне очевидные и содержат сотруктуру, поэтому для них ДТО является оверхедом.

Макс- Автор вопроса

Особенно когда надо отправить в чужое апи по другому товары к примеру в корзине

Vladislav
Особенно когда надо отправить в чужое апи по друго...

Зависит от архитектуры. Если это самое чужое апи предоставляет устанавливаемый пакет внутри которого есть DTO для контроля типизации, то ок. Но если его нужно самому писать на стороне приложения, то это на фиг не надо - просто прокидываем ключи на отправку и всё. Например: Http::post('/some', [ 'user_id' => ..., 'price' => ..., 'items' => [ [...], ], ]);

ну вот в апи альфа банка там у товаров должны быть дополнительные вещи, ну а так да

Vladislav
ну вот в апи альфа банка там у товаров должны быть...

Дык в реквест и прописывать. Зачем ДТО-то?

Andrey Helldar
Дык в реквест и прописывать. Зачем ДТО-то?

из своей бд переформировать товары как для посыла без изменений? ну в принципе тоже логично, согласен, да

Vladislav
из своей бд переформировать товары как для посыла ...

В форм реквест через map и всё. В данном случае, на мой взгляд, ДТО будет абсолютно ненужной прослойкой. Как раз тот самый пример когда класс создаётся ради класса.

Vladislav
а почему в форм реквесте?

Буквами промахнулся. Подумал "http клиент отправляет реквест" и написал "форм реквест" на автомате)

Andrey Helldar
Зависит от архитектуры. Если это самое чужое апи ...

ну вот работал с чеками месяц назад, заюзал ДТО потому что там должен быть массив объектов товаров, с другими полями, ну я подумал и просто через map прогнал товары и объекты сделал, но думаю что надо переделать, но пока такое решение сделано у меня, немного говнокодинга :(

Vladislav
ну вот работал с чеками месяц назад, заюзал ДТО по...

Если при передаче конечный объект, скажем так, выносит мозг в плане вложенности элементов, тогда да, ДТО стоит внедрять для повышения прозрачности. А если нет, то не нужен. Как писал выше, всё зависит от архитектуры.

Похожие вопросы

Обсуждают сегодня

Hi there everyone Is there anyone who have not started hamster bot yet? I need only one, I'll be glad if you do this for me DM if you haven't yet
Mehrshad
53
why some site like google has separate page for username/email and password?
Mr Thieves
21
Может быть небольшое отступление, но я тут решил обратить внимание на то, сколько весит хелловорлд на с++... Зачем он весит почти 250 Кб? У меня оконное приложение на фасме ве...
The Bird of Hermes
14
всем привет! у кого есть опыт подписания и нотаризации electron приложений для macos? такая проблема: использовал @electron/osx-sign и notaritool. процесс подписания и нотараз...
Артем Клементьев
6
А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
@Dreamer_0x01 @helgispbru @Ambrion Разговор шёл об уязвимости. Меня беспокоит именно она. Все прочие вопросы, а равно и жизненная мудрость - пока в сторону :) Так вот сам ...
Андрей [aharito] Харитонов
5
What do you wanna learn?
Malware ( DM = BLOCK )
12
Подскажите, сейчас что то есть (JS модуль какой-нибудь), что можно использовать для: 1) переваривания javascript codа из html fileа, т.е. разбивки, на переменные, команды, бло...
Iar De
32
Всем привет. Программно добавляю документы в таблицу site_content в конце очищаю кеш $modx->clearCache(); Но документы появляются в дереве только после того как редактирую ...
Владимир
8
Мне интересно, скорее людей здесь используют D, Rust, C/C++ для решения реальных прикладных задач за деньги?)
Evil Satanson
43
Карта сайта