PSR-7 фреймворк 5/7: Шаблонизаторы и вёрстка

Пятый урок серии скринкастов по изучению PSR-7 микрофреймворков в PHP. Пишем свой шаблонизатор и изучаем работу существующих. Обсуждение и исходники:
Обновленные эпизоды выходят на
Блог:
Скринкасты:
Задонатить:
Тайм-коды: 00:00:00 - Вступление, повторение выводов предыдущего урока 00:07:12 - Ответ на вопрос: почему используют микрофреймворки? 00:12:10 - Цели и задачи урока 00:15:35 - Экранирование кода, htmlspetialcars 00:21:52 - Вынесение HTML-разметки в templates 00:23:31 - HelloAction 00:24:51 - Буферизация вывода HTML-кода 00:33:06 - Bootstrap с CDN 00:36:35 - Вынесение кода в метод render 00:38:59 - Передача имени представления 00:40:02 - Передача параметров 00:42:00 - Распаковка массива params 00:47:37 - Переменная templateFile 00:49:13 - Вынесение кода в класс TemplateRenderer 00:53:53 - Настройка папки с шаблонами 00:58:01 - Отладка тестов 01:01:53 - Добавление верстки 01:06:08 - Дописывание контроллеров 01:06:55 - HelloActionTest 01:07:58 - Вынесение интерфейса, PhpRenderer 01:11:11 - Вынос общего макета в layout, теория 01:20:07 - Вынос общего макета в layout, реализация 01:22:46 - Директивы extends и params 01:31:36 - Шаблон Columns 01:35:01 - Инкапсуляция render() и extend() 01:38:13 - Разные сайдбары в разных представлениях, буферизация ввода 01:42:28 - Инкапсуляция блоков 01:46:07 - Переписывание блоков на использование стека 01:49:19 - Контент блока по умолчанию 01:51:19 - Хлебные крошки в главном шаблоне 01:53:21 - Метатэги 01:54:29 - Перенос params в блок 01:57:07 - Перенос контента в блок 01:59:02 - Уникальность именования блоков 02:01:13 - Промежуточные итоги 02:03:23 - Переопределение блоков 02:08:44 - Проблема рендера пропускаемых блоков 02:11:46 - Инкапсуляция в метод ensureBlock() 02:15:52 - Альтернатива с анонимной функцией 02:20:22 - Ленивая загрузка блоков 02:23:22 - Инкапсуляция htmlspecialchars() 02:25:05 - Генерация адресов через маршрутизатор 02:34:33 - Страницы вывода блога 02:42:47 - Генерация страницы 404 02:45:03 - Страницы других ошибок 02:51:14 - Промежуточные итоги 02:53:12 - Плюсы, минусы и возможности шаблонизаторов, теория 03:04:36 - Нюансы выкладывания в публичный доступ, SOLID, теория 03:11:23 - Динамическое добавление методов, теория 03:14:44 - Отключение буферизации для вывода исключений 03:21:34 - Магический __call для вызова функций 03:25:44 - Подключение нашего маршрутизатора 03:29:21 - Вынесение функций в отдельные классы 03:32:40 - Метод addFunction() 03:34:31 - Инкапсуляция имени функции 03:37:32 - Добавление комплекта функции 03:39:51 - Замена анонимных функций на callback-и 03:41:25 - Класс Extention 03:43:28 - Переименование Function в Extention 03:47:50 - Передача рендерера и циклические зависимости 03:54:46 - Структура SimpleFunction 03:57:25 - Промежуточные итоги 04:00:13 - Готовый шаблонизатор Plates 04:04:16 - Недостатки шаблонизатора Plates 04:06:23 - Другие шаблонизаторы 04:10:05 - Шаблонизатор Twig, обзор 04:18:57 - Установка twig, переписывание представлений 04:27:47 - Использование в нашем коде, внутренности Twig 04:34:14 - Папки шаблонов и псевдонимы 04:37:10 - Twig в контейнере, адаптер TwigRenderer 04:42:42 - Кэширование сгенерированного кода 04:44:23 - Отключение кеширования в режиме разработки 04:45:56 - Функция dump() для отладки 04:47:36 - Перенос кода в контейнер 04:51:11 - RouteExtention для Twig 04:54:06 - Дополнительные опции расширений 04:59:19 - Всеядность Twig-а по работе с переменными 05:04:56 - Вынесение конфигурации шаблонизатора 05:08:25 - Вынесение массива расширений 05:10:43 - Вынесение в templates.global.php 05:11:55 - Проверка результата, внутренности Twig 05:26:25 - Подведение итогов

Смотрите также