@vrazbros

Пример паттерна стратегии на PHP?

Привет

Разбираюсь с паттерном стратегия и в основном натыкаюсь на пример вроде такого в котором мы делаем что то вроде такого:
1 Создаем обьект класса который отвечает за какойто алгоритм
2 Создаем обьект класса где используется алгоритм, передаем зависимость через конструктор и потом используем через свойство класса.

а кто то может привести реальный пример на php ? что если алгоритм зависит от данных в реквесте ? в контролере добавить кучу if с помошью которых будет выбираться алгоритм ?
  • Вопрос задан
  • 342 просмотра
Решения вопроса 2
glaphire
@glaphire Куратор тега PHP
PHP developer
doctrine cookbook: strategy introduction
Zend Hydrator
Monolog - Handling strategy in Fingers Crossed handler
В коде Зенда много стратегий, в других фреймворках тоже часто встречается, только в неявном виде
Ответ написан
Комментировать
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@sidni
Php Developer
Ну если по пропростому в целом идея такая (лень код писать)
1) Создаешь кучу объектов класса где будет алгоритм обработки реквеста
1.1)реализуешь в каждом этом объекте метод do($request) - сама обработка реквеста
1.2)реализуешь в каждом этом объекте метод can($request) - можно не весь реквест а какой нибудь флаг этот метод будет возвращать true если этот объект подходит для обработки этого реквеста
2) Создаешь объект класса обработки стратегий,
2.2)в приватном поле опиши массив доступных классов стратегий (можно даже указать неймспейсами а тогда метод can сделать статическим)
2.3)реализуешь метод do($request) где пробегаешься циклом по каждой стратегии вызывая метод can и у того которого вернула true вызываешь do($request)
Ответ написан
Ваш ответ на вопрос

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

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