@serguey_issakov

Какой PHP-фреймворк для приложения по обработке данных из разных источников?

Я быдлокодер, делаю приложение (далее - апп) которое будет много умнее меня. По смыслу и архитектуре - ETL с пользовательским интерфейсом для диспетчеризации заданий.

Главная головная боль:
-колоссальное разнообразие источников данных (в основном REST API), объекты все примерно одной природы. Все источники несут единый интерфейс, между ними нужно легко переключаться в админке.
Пример:
1.пользователь-блоггер может вести блог в битриксе или вордпрессе, в админке у него выбор между данными источниками. Но битрикс отдает пост в формате { id:"1", begindate:"01.01.1970 00:00:00", text:"foo"}, вордпресс как { id:"1", post_date:"1970/01/01T00:00GMT", post_text:"baz"}.
2. Вышла новая версия вордпресс, там поле post_text переименовали в post_content, значит теперь мы спрашиваем у пользователя в админке помимо выбора между битрикс или вордпресс, еще и версию системы, чтобы переименовывать это поле для бизнес-логики внутри задания
3. Пользователь ведет собственный быдлоблог на самописном быдлодвижке, мы пишем под него индивидуальный класс подключения custom_DAO_Igor.php (например стучимся напрямую в его бд) и кладем этот класс в папочку существующих источников. В админке (или файловой конфиге) теперь выбираем $dao_type = "custom_DAO_Igor" и задание при запуске понимает что нам нужен источник истанцсированный из вот этого вот специфичного класса (lib\dao\custom_DAO_Igor.php) внутри котого лежит единственный class Custom_DAO_Igor implements Post_Dao_Interface.

-централизованное инстанцирование объектов (фасад / фабрика).

Пример:
в десяти местах (или скорее всего неопределенно большом количестве) бизнес-логики нужно влазить в вордпресс и уточнять перечень тэгов, чтобы все они получали через фасад/фабрику ссылку на единое подключение, вместо того чтобы создавать десяток (больше) новых.

-задания примерно единой природы, но нужен контроль задания изнутри объектов (фасад управления?)
Пример:
бизнес-логика может потребовать остановку исполнения задания, если встретится с некоторой ошибкой на уровне среды (сервер не отвечает 30 секунд).
или по требованию бизнес-логики гдето внутри задачи (post_text содержит Джигурда -> закрыть все подключения, записать в лог "зашквар" и удалить аккаунт пользователя).
При этом важно что остановка задания не означает окончание всего php процесса - диспетчер заданий должен получить сигнал об остановке через Фасад управления и перейти к следующей задаче по плану

Что уже курил: форумы, доки symfony и laravel. Как я понял все крупные фреймворки мне мало помогут, там народ пишет свои кастомные репозитории и подключения, потом описывает их в коде, это, конечно, реально когда у тебя их конечное количество, здесь же бесконечное количество разных, но с единым интерфейсом. Каждый раз вписывать в код что у тебя появился новый источник уберемся - хотим чтобы фреймворк просто мог потребовать инстанцирование по названию класса полученному в переменной типа app::singleton("custom_DAO_Vasily_3_0", $arParams); это главный вопрос, все остальные типа фасада управления я обойду архитектурно, если что.

Подскажите если знаете какой фреймворк справляется с этим из коробки.
Или кого-нибудь кто с этим уже сталкивался и может выступить как техэксперт по договоренности

Спасибо
  • Вопрос задан
  • 529 просмотров
Решения вопроса 3
DevMan
@DevMan Куратор тега PHP
эмм.... кагбе никакой фреймворк не мешает создать объект на основании внешних данных.
Ответ написан
@402d
начинал с бейсика на УКНЦ в 1988
Честно не вижу смысла загонять себя в рамки фреймворка. Таких специализированных по моему мнению
нет. Ваша задача отлично ложится на RabitMQ . Вам потребуется скорее не фреймворк, а базовые принципы
проектирования / разработки. Понятие интерфейса и класса его реализующего .

Приблизительно будет так.
Пользователь Вася хочет опубликовать пост с темой и текстом таким-то
Слушатель КООРДИНАТОР из этого события Делает события
- Вася хочет опубликовать в ВК
- Вася хочет опубликовать в ОК
- Вася хочет опубликовать в ФБ
- Вася хочет опубликовать в АХЗ

Слушатель ВК (кто то хочет запостить, исполняю)
Ответ написан
zorca
@zorca
Как-бы фреймворк - это инструмент, а пользоваться инструментом должен мастер, который уже сотворит им чудо. Нет волшебной кнопки "Сделать хорошо". Ну раз вопрос в пыхоразделе, то логично взять Laravel, так как в нем проще всего быстро создавать такие чудные приложения. В нем из коробки есть все средства для этого.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
profesor08
@profesor08
CodeIgniter, покроет все описанные требования. Вот прям идеально зайдет, любая версия. Они прям созданы друг для друга.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы