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

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



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

21 ответов

20 просмотров

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

Ресурсы не надо передавать во вьюхи. 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
ну вот работал с чеками месяц назад, заюзал ДТО по...

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

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта