Разработка веб-приложений в Yii 2
Покупка
Тематика:
Web-технологии. Web-дизайн
Издательство:
ДМК Пресс
Автор:
Сафронов Марк
Год издания: 2023
Кол-во страниц: 393
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Профессиональное образование
ISBN: 978-5-89818-585-5
Артикул: 644051.03.99
Yii — это высокопроизводительный фреймворк, используемый для быстрой разработки веб-приложений на PHP. Он хорошо спроектирован, имеет прекрасную поддержку, его легко изучить и легко сопровождать. Эта книга на практических примерах покажет вам самые важные возможности Yii 2. Сквозь всю книгу проходит пример построения реального приложения — каждая глава представляет новую функциональность и показывает приёмы тонкой настройки. Вместо того, чтобы пытаться быть всеобъемлющим справочником по Yii 2, издание является руководством по тем сведениям, которые важно знать практикующему разработчику.
Издание предназначено для веб-разработчиков как уже знакомых с Yii, так и начинающих пользователей фреймворка.
- Полная коллекция по информатике и вычислительной технике
- Web-технологии. Web-дизайн
- Веб-разработка
- ДМК Пресс. Информационные системы и технологии
- ДМК Пресс. ИТ-технологии для профессионалов
- Интермедиатор. Информационные системы и технологии (сводная)
- Интермедиатор. ИТ-технологии для профессионалов (сводная)
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 02.03.01: Математика и компьютерные науки
- 02.03.02: Фундаментальная информатика и информационные технологии
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Разработка веб-приложений в Yii 2 Марк Сафронов
Web Application Development with Yii 2 and PHP Mark Safronov, Jeffrey Winesett
Разработка веб-приложений в Yii 2 Марк Сафронов Москва, 2023 2-е издание, электронное
УДК 004.738.5:004.45Yii ББК 32.973.202-018.2 C21 C21 Сафронов, Марк. Разработка веб-приложений в Yii 2 / М. Сафронов ; пер. с англ. — 2-е изд., эл. — 1 файл pdf : 393 с. — Москва : ДМК Пресс, 2023. — Систем. требования: Adobe Reader XI либо Adobe Digital Editions 4.5 ; экран 10". — Текст : электронный. ISBN 978-5-89818-585-5 Yii — это высокопроизводительный фреймворк, используемый для быстрой разработки веб-приложений на PHP. Он хорошо спроектирован, имеет прекрасную поддержку, его легко изучить и легко сопровождать. Эта книга на практических примерах покажет вам самые важные возможности Yii 2. Сквозь всю книгу проходит пример построения реального приложения — каждая глава представляет новую функциональность и показывает приёмы тонкой настройки. Вместо того, чтобы пытаться быть всеобъемлющим справочником по Yii 2, издание является руководством по тем сведениям, которые важно знать практикующему разработчику. Издание предназначено для веб-разработчиков как уже знакомых с Yii, так и начинающих пользователей фреймворка. УДК 004.738.5:004.45Yii ББК 32.973.202-018.2 Электронное издание на основе печатного издания: Разработка веб-приложений в Yii 2 / М. Сафронов ; пер. с англ. — Москва : ДМК Пресс, 2015. — 392 с. — ISBN 978-5-97060-252-2. — Текст : непосредственный. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами защиты авторских прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации. ISBN 978-5-89818-585-5 © 2014 Packt Publishing © Оформление, издание, ДМК Пресс, 2015
Содержание Вступительное слово от разработчика Yii ..............................10 Об авторах .......................................................................11 Предисловие ....................................................................12 Глава 1. Начинаем .............................................................18 Базовое приложение .........................................................................................................18 Установка базового шаблона приложения...........................................................18 Подробности о базовом шаблоне приложения ..................................................21 Проверка требований к системе ...................................................................................22 Расширенный шаблон приложения ............................................................................23 Установка расширенного шаблона приложения ...............................................23 Подробности о расширенном шаблоне приложения .......................................25 Итоги ......................................................................................................................................27 Глава 2. Создаём приложение с Yii 2 вручную .........................28 Этап проектирования .......................................................................................................29 Поставленная задача ...................................................................................................29 Проектирование предметной модели ....................................................................29 Целевая функциональность ......................................................................................31 Начальная подготовка ................................................................................................32 Настройка управления проектом............................................................................32 Установка средств тестирования .............................................................................33 Настройка конвейера развёртывания ...................................................................36 Добавление фреймворка Yii в наше приложение ...................................................41 Первый тест через всё приложение ........................................................................41 Установка Yii 2 на чистую базу кода ......................................................................48 Введение в соглашения Yii ........................................................................................49 Строим фреймворк кода ............................................................................................50 Добавляем контроллер ...............................................................................................52 Облегчение отладки возможных ошибок ............................................................53 Создаём слои данных и приложения ..........................................................................54 Определение модели клиента на слое данных ...................................................55 Подготовка базы данных ............................................................................................56 ORM в Yii ........................................................................................................................60 Отделяемся от ORM....................................................................................................63 Создание пользовательского интерфейса .................................................................65 Пользовательский интерфейс добавления клиента .........................................65 Вводный курс маршрутизации ................................................................................67 Шаблоны .........................................................................................................................68 Завершение интерфейса добавления клиента ....................................................69 Виджеты ...........................................................................................................................72 Пользовательский интерфейс списка клиентов ................................................72 Пользовательский интерфейс запроса к БД .......................................................74 Использование приложения ..........................................................................................75 Итоги ......................................................................................................................................77 Глава 3. Автоматическая генерация кода ...............................79 Определение модели данных для работы ..................................................................79
Содержание Использование Gii .............................................................................................................80 Установка Gii в приложение .....................................................................................80 Создаём код для класса модели ...............................................................................82 Создаём CRUD ..............................................................................................................84 Завершающие штрихи ......................................................................................................87 Создаём новый шаблон для поддержки созданных Gii страниц .................87 Обзор созданного пользовательского интерфейса .................................................89 «За» и «против» автоматической генерации классов ...........................................93 Итоги ......................................................................................................................................94 Глава 4. Рендерер ..............................................................95 Анатомия отрисовки в Yii ...............................................................................................95 Компоненты приложения ...............................................................................................97 Компонент представления ............................................................................................100 Алгоритм поиска файлов представлений ..........................................................100 Алгоритм поиска файла шаблона .........................................................................103 Внутренности процесса отрисовки файла представления ...........................105 Ручная настройка отрисовщиков ...............................................................................106 Ручная настройка компоновщика отклика .............................................................112 ВОЗМОЖНОСТЬ: пакеты материалов ..................................................................117 Пакет материалов с файлами из произвольного каталога ...........................117 Публикация материалов ..........................................................................................118 Пакет материалов с файлами из доступного из Сети каталога ..................120 Ручная регистрация файлов CSS и Javascript .................................................121 Размещение файлов Javascript в пакетах материалов ...................................123 Создаём свой пакет материалов ............................................................................124 ВОЗМОЖНОСТЬ: темы ..............................................................................................125 Создание своей «снежной» темы ..........................................................................125 Виджеты ..............................................................................................................................128 Итоги ....................................................................................................................................129 Глава 5. Аутентификация ..................................................130 Анатомия входа пользователя в систему в Yii .......................................................130 Механика входа в систему по логину и паролю в целом ...................................131 Создание интерфейса управления пользователями ............................................133 Приёмочные тесты для интерфейса манипулирования пользователями ...........................................................................................................133 Таблица в БД для хранения записей о пользователях ..................................135 Создание кода модели и CRUD при помощи Gii ............................................135 Удаляем поле пароля из автоматически сгенерированного кода ..............136 Хэширование пароля при сохранении записи пользователя ...........................136 Функциональные тесты для хэширования паролей ......................................137 Реализация хэширования паролей в Active Record .......................................140 Превращение UserRecord в Identity ..........................................................................143 Создание интерфейса входа в систему .....................................................................146 Спецификация аутентификации пользователя ...............................................146 Создание индикатора аутентификации ..............................................................149 Функциональность формы входа .........................................................................150 Функциональность выхода из системы и подведение итогов ....................155 Итоги ....................................................................................................................................155
Содержание 7 Глава 6. Авторизация пользователей и контроль доступа .......157 Контроль доступа с использованием состояния аутентификации пользователя ......................................................................................................................157 Возможность: методы-перехватчики у класса контроллера .......................158 Обработка исключений в Yii 2 ...............................................................................160 ВОЗМОЖНОСТЬ: фильтры действий контроллеров .................................164 Контроль доступа на основе ролей ............................................................................168 Защита администрирования CRM от пользователей CRM .............................169 Установка предопределённых пользователей ..................................................170 Менеджеры RBAC в Yii ............................................................................................172 Тесты для нашей иерархии ролей .........................................................................174 Установка иерархии ролей ......................................................................................176 Тест контроля доступа в контроллерах ...............................................................179 Фильтр контроля доступа .......................................................................................181 Применение контроля доступа к сайту...............................................................183 Итоги ....................................................................................................................................187 Глава 7. Модули ..............................................................189 Модули Yii ..........................................................................................................................189 Неформальное понятие «достижимости» .........................................................190 Исследование сложностей конфигурации модулей на глупых примерах ........................................................................................................................191 Модуль отладки ..........................................................................................................196 Построение модуля API ................................................................................................199 Построение набора тестов для проверки API ...................................................199 Определение требований к модулю API в виде автоматических тестов ..............................................................................................................................202 Перемещение действий контроллера в отдельный модуль .........................206 Ретроспектива о модулях, упомянутых в предыдущих главах ........................208 Итоги ....................................................................................................................................210 Глава 8. Поведение в целом...............................................211 ВОЗМОЖНОСТЬ: журнал событий .......................................................................211 Сохранение сообщений журнала ..........................................................................213 Установка компонента отправки электронной почты для отправки сообщений журнала ...................................................................................................215 Чтение сохранённых записей журнала ...............................................................216 ВОЗМОЖНОСТЬ: профилирование ......................................................................220 Подробности обработки ошибок ................................................................................225 ВОЗМОЖНОСТЬ: действие контроллера, обрабатывающее ошибки ...........................................................................................................................227 Список встроенных исключений ..........................................................................229 Кэширование .....................................................................................................................230 ВОЗМОЖНОСТЬ: компонент кэша ..................................................................230 ВОЗМОЖНОСТЬ: кэширование запросов к базе данных .........................234 ВОЗМОЖНОСТЬ: кэширование фрагментов страницы ...........................235 ВОЗМОЖНОСТЬ: кэширование страницы целиком ..................................235 ВОЗМОЖНОСТЬ: кэширование запроса заголовками HTTP ...............237
Содержание Минимизация материалов ............................................................................................238 Итоги ....................................................................................................................................246 Глава 9. Создание расширения ..........................................247 Идея расширения .............................................................................................................247 Создание содержимого для расширения .................................................................248 Подготовка шаблонного кода для расширения ...............................................249 ВОЗМОЖНОСТЬ: бутстреппинг .......................................................................250 ВОЗМОЖНОСТЬ: регистрация расширений ................................................251 Создание бутстреппинга для нашего расширения – тайное присоединение контроллера ...................................................................................252 Делаем расширение устанавливаемым как... хм... расширение .......................254 Подготовка корректного манифеста composer.json ........................................257 Настройка репозиториев .........................................................................................259 Итоги ....................................................................................................................................265 Глава 10. События ...........................................................266 Автоматическая пометка записей в БД меткой времени и ID пользователя ............................................................................................................266 Тест создания пользователя ....................................................................................267 Тестовый случай обновления записи о клиенте ..............................................270 Подготовка полей в базе данных ...........................................................................272 Использование поведений «timestamp» и «blameable» .................................273 ВОЗМОЖНОСТЬ: поведение ...................................................................................276 ВОЗМОЖНОСТЬ: события .......................................................................................279 Встроенные события .......................................................................................................284 События класса \yii\base\Application ................................................................285 События класса \yii\base\Controller ...................................................................285 События класса \yii\base\Module ........................................................................286 События класса \yii\base\View .............................................................................286 События класса \yii\web\View .............................................................................287 События класса \yii\base\Model ..........................................................................288 События класса \yii\db\BaseActiveRecord .......................................................288 События класса \yii\db\Connection ....................................................................290 События класса \yii\web\Response .....................................................................290 События класса \yii\web\User ..............................................................................290 События класса \yii\mail\BaseMailer .................................................................291 Итоги ....................................................................................................................................292 Глава 11. Таблица ............................................................293 Избавление от слоя предметной области ................................................................293 Дизайн списка клиентов ................................................................................................294 Создание активных записей телефонов, адресов и адресов электронной почты ....................................................................................................295 Создание общего базового контроллера для подчинённых моделей .......298 Создание отношений между моделью клиента и подчинёнными моделями .......................................................................................................................301 ВОЗМОЖНОСТЬ: виджеты ......................................................................................304 Создание страницы списка клиентов........................................................................306
Содержание 9 Создание базового GridView для клиентов .......................................................307 Изменение формата содержимого колонки ......................................................308 ВОЗМОЖНОСТЬ: компонент форматирования ..........................................310 Создание преднастроенной колонки GridView ...............................................314 Сжатие подчинённых моделей в одну колонку ...............................................321 ВОЗМОЖНОСТЬ: колонки GridView ..............................................................322 Реализация фильтрации в GridView ...................................................................324 Реализация сортировки в GridView.....................................................................330 Итоги ....................................................................................................................................336 Глава 12. Маршрутизация .................................................337 Продвинутый курс маршрутизации ..........................................................................337 ВОЗМОЖНОСТЬ: маршрутизация с использованием имён модулей, контроллеров и действий ..............................................................................................339 Фундаментальные правила работы с URL в Yii 2...........................................340 ВОЗМОЖНОСТЬ: создание URL в Yii 2 .........................................................341 Преднастроенные маршруты с использованием конфигурации .....................342 ВОЗМОЖНОСТЬ: правила URL........................................................................342 Преднастроенные маршруты с использованием классов правил URL.........345 Итоги ....................................................................................................................................348 Глава 13. Совместная работа .............................................349 Конструирование конфигурации ...............................................................................349 Добавление локальных переопределений в конфигурацию .......................351 Консольное приложение ...............................................................................................355 Преднастроенные консольные команды ............................................................356 Миграции базы данных ..................................................................................................359 Создание преднастроенных шаблонов для миграций базы данных .........364 Итоги ....................................................................................................................................366 Приложение А. Настройка развёртывания с использованием Vagrant .................................................368 Планирование ...................................................................................................................369 Начальная настройка ......................................................................................................370 Тонкая настройка виртуальной машины .................................................................371 Подготовка гостевой ОС ..........................................................................................371 Подготовка базы данных и веб-сервера ..............................................................373 Подготовка приложения ..........................................................................................373 Использование виртуальной машины в качестве локальной цели развёртывания ...................................................................................................................374 Приложение В. Пример Active Form .....................................377 Создание формы редактирования клиента .............................................................377 ВОЗМОЖНОСТЬ: Active Query .........................................................................378 Настройка автоматически созданной формы ...................................................380 Передача идентификатора клиента в подчинённые модели .......................386 Возвращение в форму редактирования клиента после редактирования подчинённой модели ................................................................388 Преднастроенное значение колонки адреса ......................................................389
Вступительное слово от разработчика Yii Я слежу за всеми новыми материалами по Yii и был обрадован и удивлён появлению книги по Yii 2.0 ещё до релиза фреймворка. Финальная английская версия ушла в печать, в то время как во фреймворке были сделаны довольно серьёзные изменения, и по этому поводу я был настроен несколько скептически: а вдруг там устаревшая или неточная информация? Опасения не оправдались: материал был действительно хороший, в книге показаны как возможности фреймворка, так и лучшие практики разработки. Да, были небольшие недочёты, но в общем всё было отлично. Когда я узнал, что готовится перевод книги на русский, опасения вернулись, но оказались напрасными: перевод делал сам автор, попутно обновляя то, что успело поменяться, и исправляя те неточности, что всё-таки пробрались в англоязычную версию. В итоге получился действительно хороший материал, который поможет как познакомиться со второй версией фреймворка, так и улучшить свои навыки и знания применительно к разработке в целом. Единственное, что стоит учесть, – книга не для новичков в программировании в целом. Предполагается, что читатель знаком с командной строкой, системами контроля версий, тестированием и может ориентироваться в исходном коде. Александр Макаров, Yii core team