Создаем свой Фреймворк на компонентах symfony2. Часть 7

Сейчас в нашем фреймворке есть один минус. Нам нужно копипастить код во front.php каждый раз, как мы создаем сайт. 40 строк кода — это не так уж и много, но было бы неплохо обернуть этот код в класс, что даст нам возможность многократного использования, и лучшую тестируемость кода.

Если присмотреться к front.php — можно увидеть, что мы принимаем данные запроса и выводим ответ. Наш класс будет придерживаться простого принципа: вся логика ограничена созданием ответа для запроса.

Так как, компоненты Symfony2 все равно требуют PHP 5.3, давайте для нашего класса определим пространство имен Simplex, и перенесем в него логику обработки запроса:

И соответственно front.php

Также все кроме определения маршрутов(/src/app.php), вынесем в пространство имен Calendar.

Для автозагрузки классов, определенных в пространствах имен Symplex и Calendar необходимо обновить файл composer.json:

Что бы изменения вступили в силу, выполните php composer.phar update

Перенесем контроллер в Calendar\Controller\LeapYearController:

Функцию is_leap_year() также вынесем в отдельный класс:

Соответственно, файл app.php:

Текущая структура ваших файлов:

Ну вот! Теперь наше приложение состоит из четырех разных слоев, и каждый из них служит определенной цели:

  • web/front.php — front контроллер, содержит код взаимодействия с клиентом (получает запрос и отправляет ответ), а также код инициализации фреймворка и приложения.
  • src/Simplex — Код фреймворка, управляющий входящим запросом (кстати, он делает ваши контроллеры и шаблоны более тестируемыми, но об этом позже)
  • src/Calendar — Код реализующий наше приложение.
  • src/app.php — конфигурация приложения и кастомизация фреймворка.

К содержанию >>
Оригинал статьи на английском языке >>
Исходный код из статьи >>

Не забудьте поделиться статьей с друзьями

Подписывайтесь на меня в соц. сетях

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *