c0nstruct0r
@c0nstruct0r
PHP программист

Есть класс (сервис) к которому надо передать провалидировнную конфигурацию. Как это лучше делать?

Есть сервис который работает с двумя API. В сервис данные приходят из web формы. Для формы есть свой класс, который умеет парсить post запрос в объект. Форма - уровень web. Сервис - уровень бизнес логики. Надо предусмотреть возможность использовать этот же сервис и из консоли (например). Потому нельзя ему напрямую передавать форму как параметр. Как правильно сманить форму в конфигурированиям для сервиса? Есть ли какой-то best practice для этого?

PS: извините з некоторую сумбурность вопроса.
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ответы на вопрос 3
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Для формы есть свой класс, который умеет парсить post запрос в объект.
Это же по сути DTO объект? Передавайте DTO, если через консоль - сериализируйте и бэйз64энкод, в контроллере консольного приложения уже принимайте параметр, преобразуйте обратно и уже скармливайте объекту работы с апи.
Ответ написан
Комментировать
@4iloveg
Full-Stack HTML Developer
В классе сделай один метод принимающий данные из формы а другой метод - из консоли.
Ответ написан
akubintsev
@akubintsev
Опытный backend разработчик
Продублирую комментарий Евгений Добрянский: "Делай для сервиса класс с параметрами, а кто и как объект этого класса создаёт для сервиса не важно"

Суть проблемы сводится к абстрагированию бизнес-логики от способа получения данных.
Можно представить этот как адаптер, которым в одном случае выступает контроллер, получающий веб-форму. В другом - команда консольного приложения.
Как бы там не было, не стоит забивать паттернами голову в данному случае, поскольку способов получения информации на вход бизнес-логики не будет много так или иначе. Ну что еще добавите? Метод API наружу?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
28 мар. 2024, в 21:17
5000 руб./за проект
28 мар. 2024, в 20:46
150000 руб./за проект
28 мар. 2024, в 20:37
50000 руб./за проект