Задать вопрос
c0nstruct0r
@c0nstruct0r
PHP программист

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

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

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

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

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

Похожие вопросы
19 дек. 2024, в 10:33
1000 руб./за проект
19 дек. 2024, в 10:16
5000 руб./за проект
19 дек. 2024, в 08:18
15000 руб./за проект