Подскажите паттерн ООП для задачи

Пишу на PHP что-то вроде демона, который не останавливаясь обрабатывает заявки, поступающие из БД.

Вопрос такой: как организовать структуру программы? Я хочу, чтобы в зависимости от типа заявки, к ней применялись различные проверки. Причем проверки должны вызываться на 3-х этапах: заявка поступила, обработана, ушла.

Т.е. должно быть что-то типа событий OnStart, OnProcessed, OnFinish на которые навешены функции проверки, которым поступают на вход параметры заявки. Порядок выполнения функций для меня не важен.

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

В принципе ООП для меня не самоцель, я могу обойтись и без него.
  • Вопрос задан
  • 4221 просмотр
Пригласить эксперта
Ответы на вопрос 5
Сами названия методов нам подсказывают, что можно использовать событийный подход.
Ответ написан
Комментировать
@StepEv
ChainOfResponsibility, Strategy, может быть State
Ответ написан
Комментировать
Для демонов можно воспользоваться reactphp.org — крутой асинхронный фреймворк.
Ответ написан
Комментировать
tyomo4ka
@tyomo4ka
Если Вам не нужно распределенное решение, а что-то простенькое, то вполне подойдет паттерн Observer en.wikipedia.org/wiki/Observer_pattern. Как конкреную оеализацию, могу посоветовать Symfony Event Dispatcher компонент symfony.com/doc/current/components/event_dispatcher/introduction.html.

Если же хотите, чтобы очередь работала асинхронно. То, как уже советовали или react.php. Или если нет проблемы с установкой настройкой дополнительного софта, поставьте какой-нибудь сервер очередей (например, ActiveMQ activemq.apache.org/) и работайте с ним из PHP.
Ответ написан
Комментировать
stalkerg
@stalkerg
Вот этого я и не люблю! Не надо натягивать патерн на задачу! Берите и решайте задачу как вам подсказывает логика.
На каждый чих патерна нету, и часто патерн может усложнить простую задачу.

И да, если вы можете обойтись без ООП (и вы уверены что оно вам дальше не понадобится) то не используйте его! ООП так же может усложнить или запутать простую задачу.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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