Action-Domain-Responder with Slim - Slim Framework
У цій публікації я покажу, як рефакторизувати програму Slim tutorial, щоб більш точно слідувати шаблону Action-Domain-Responder.

Одна приємна річ у Slim (та більшості інших фреймворків користувальницького інтерфейсу HTTP) полягає в тому, що вони вже орієнтовані на “дії”. Тобто їх маршрутизатори не передбачають клас контролера з багатьма методами дій. Натомість вони припускають закриття дії або викличний клас однієї дії.
Отже, частина дії Action-Domain-Responder вже існує для Slim. Все, що потрібно - це витягнути сторонні біти з дій, щоб чіткіше відокремити поведінку дії від домену та поведінку відповідача.
Витяг домену
Почнемо з вилучення логіки домену. У оригінальному навчальному посібнику "Дії" безпосередньо використовують два картографа джерела даних, а також вбудовують деяку бізнес-логіку. Ми можемо створити клас сервісного рівня, який називається TicketService, і перемістити ці операції з дій у домен. Це дає нам такий клас:
Ми створюємо для нього об’єкт-контейнер у index.php так:
І тепер Action може використовувати TicketService замість безпосереднього виконання логіки домену:
Однією перевагою є те, що тепер ми можемо тестувати доменні дії окремо від дій. Ми можемо почати робити щось більше, як інтеграційне тестування, навіть модульне тестування, замість наскрізного тестування системи.
Витяг відповіді
У випадку програми-підручника робота з презентацією настільки проста, що не вимагає окремого відповідача для кожної дії. Розслаблена варіація шару Responder цілком підходить у цьому простому випадку, коли кожна дія використовує інший метод на загальному Responder.