Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Разработка веб-приложений в Yii 2

Покупка
Артикул: 644051.03.99
Доступ онлайн
519 ₽
В корзину
Yii — это высокопроизводительный фреймворк, используемый для быстрой разработки веб-приложений на PHP. Он хорошо спроектирован, имеет прекрасную поддержку, его легко изучить и легко сопровождать. Эта книга на практических примерах покажет вам самые важные возможности Yii 2. Сквозь всю книгу проходит пример построения реального приложения — каждая глава представляет новую функциональность и показывает приёмы тонкой настройки. Вместо того, чтобы пытаться быть всеобъемлющим справочником по Yii 2, издание является руководством по тем сведениям, которые важно знать практикующему разработчику. Издание предназначено для веб-разработчиков как уже знакомых с Yii, так и начинающих пользователей фреймворка.
Сафронов, М. Разработка веб-приложений в Yii 2 : практическое руководство / М. Сафронов ; пер. с англ. — 2-е изд. - Москва : ДМК Пресс, 2023. - 393 с. - ISBN 978-5-89818-585-5. - Текст : электронный. - URL: https://znanium.com/catalog/product/2107949 (дата обращения: 01.12.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Разработка веб-приложений 
в 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

Доступ онлайн
519 ₽
В корзину