PSR-7 фреймворк: Контроллеры и маршрутизация

Второй урок серии скринкастов по изучению PSR-7 микрофреймворков в PHP. Сегодня рассмотрим разделение на страницы и разделы сайта путём создания контроллеров и сопутствующей системы маршрутизации:

Исходный код на GitHub

Для более комфортного просмотра откройте скринкаст на YouTube, разверните видео до оригинального размера значком и поставьте скорость 1,75:


Содержание:

  • 00:00:00 - Вступление, повторение выводов предыдущего урока
  • 00:08:34 - Составление плана, создание новых страниц
  • 00:11:57 - Избавление от копипасты, Postprocessing
  • 00:15:43 - Prepocessing
  • 00:20:37 - Обзор стадий выполнения
  • 00:24:25 - Примитивная маршрутизация
  • 00:26:15 - Экшен блога, маршрутизация блога
  • 00:28:30 - Вынос экшена в файл
  • 00:31:56 - Экшен как анонимная функция
  • 00:34:48 - Экшен поста блога
  • 00:40:56 - Суть контроллера
  • 00:48:46 - Система маршрутизации, теория
  • 00:58:22 - Коллекция маршрутов, теория
  • 01:01:51 - Генерация адресов, теория
  • 01:06:40 - Упрощённый синтаксис маршрутов, теория
  • 01:12:46 - RouterTest
  • 01:19:01 - RouteCollection
  • 01:21:20 - Route
  • 01:22:39 - Router
  • 01:23:55 - Result
  • 01:24:55 - Методы match и generate
  • 01:26:18 - RequestNotMatchedExeption
  • 01:28:07 - RouteNotFoundExeption
  • 01:28:28 - Полноценный маршрутизатор, регулярные выражения
  • 01:41:43 - Реализация маршрутизатора (Initialization)
  • 01:43:30 - Реализация маршрутизатора (Running)
  • 01:46:29 - Рефакторинг, GRASP
  • 01:52:08 - Метод addRoute
  • 01:55:16 - Интерфейс Route
  • 01:57:28 - Вынесение экшенов в классы
  • 02:02:07 - Группировка и разделение контроллеров
  • 02:05:38 - Объект как функция
  • 02:09:15 - HelloActionTest
  • 02:10:44 - Ленивое создание объектов экшенов
  • 02:15:28 - Добавление ActionResolver
  • 02:21:21 - Готовые маршрутизаторы, теория
  • 02:33:57 - Подключение Aura.Router
  • 02:36:08 - Проблема перехода с одного маршрутизатора на другой
  • 02:44:06 - AuraRouterAdapter
  • 02:48:43 - Сила абстракции
  • 02:52:33 - Выводы

Остальные части:

  1. Структура и работа с HTTP
  2. Контроллеры и маршрутизация
  3. Middleware и Pipeline
  4. Контейнер внедрения зависимостей
  5. Шаблонизаторы и вёрстка
  6. Обновление до PSR-15, вывод ошибок и логирование
  7. Консольные команды, базы данных и ресурсы

Задавайте вопросы в комментариях. Заранее спасибо и до встречи в следующем видео!

Комментарии

 

Андрей

Чувак, спасибо тебе большое. Просто спасибо.

Ответить

 

Mad Alex

Дмитрий, здравствуйте. А не могли бы Вы в одном из будущих вебинаров немного уделить времени обработке ошибок, и их правильному выбрасыванию?

Ответить

 

Mad Alex

И вроде бы казалось, что там про ошибки и исключения то особенно рассказывать. Ан нет, тут есть нюансы. В общем, был бы благодарен за освещение этого вопроса.

Ответить

 

Максим

Дмитрий, огромное спасибо за Ваш труд. Это просто царский новогодний подарок

Ответить

 

Егор

Дмитрий, а что будет включать в себя мастер-класс по Laravel?

Ответить

 

Андрей

Когда примерно остальные части ждать?)

Ответить

 

Данил

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

https://habrahabr.ru/post/279501/

Ответить

 

Егор

Глупый подход, демонстрирующий полное непонимание исключений со стороны автора. Не нужно это здесь.

Ответить

 

Arunas

спасибо

Ответить

 

Александр

прикройте дебаг панельку на продакшне (ссылка на ваш сайт) =)

Ответить

 

Андрей

Спасибо!!!

Ответить

 

Дима

Когда будет стартовать мастер-класс по Laravel ?

Ответить

 

Александр

Огромное спасибо за курс, очень не хватает подхода "снизу" к изучению базовых принципов работы фреймворков да и вообще уроков для среднего уровня.

Ответить

 

Сергей Шурьяков

Когда услышал, про адаптацию через интерфейс, услышал "Ding!" и понял, что получил LvLup.
Дмитрий, Ваш платный курс по Yii сейчас актуален? Меня интересует не столько Yii, сколько общие знания, т.к. опыт в программировании у меня всего год. Искренне хочется поддержать Ваш труд монетой.

Ответить

 

Дмитрий Елисеев

Да, актуален, так как там говорим про общую архитектуру без привязки конкретно к Yii.

Ответить

 

Spirit Absolute

Дима, привет!
После перехода на AuraRouter тесты в testGenerateMissingAttributes не проходят. Почему то $this->expectException(RouteNotFoundException::class); ругается:

1) Tests\Framework\Http\RouterTest::testGenerateMissingAttributes
Failed asserting that exception of type "Framework\Http\Router\Exception\RouteNotFoundException" is thrown.

Ответить

Оставить комментарий

Войти | Завести аккаунт | Войти через

(никто не увидит)



Можно использовать теги <p> <ul> <li> <b> <i> <a> <pre>