Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 618400)
Контекстум

Разработка веб-приложений в Yii 2 (2000,00 руб.)

0   0
Первый авторСафронов Марк
АвторыУайнсет Джеффри
ИздательствоМ.: ДМК Пресс
Страниц393
ID795254
АннотацияYii — это высокопроизводительный фреймворк, используемый для быстрой разработки веб-приложений на PHP. Он хорошо спроектирован, имеет прекрасную поддержку, его легко изучить и легко сопровождать. Эта книга на практических примерах покажет вам самые важные возможности Yii 2. Сквозь всю книгу проходит пример построения реального приложения — каждая глава представляет новую функциональность и показывает приёмы тонкой настройки. Вместо того, чтобы пытаться быть всеобъемлющим справочником по Yii 2, издание является руководством по тем сведениям, которые важно знать практикующему разработчику.
Кому рекомендованоИздание предназначено для веб-разработчиков как уже знакомых с Yii, так и начинающих пользователей фреймворка.
ISBN978-5-97060-252-2
УДК004.738.5:004.45Yii
ББК32.973.202-018.2
Сафронов, М. Разработка веб-приложений в Yii 2 = Web Application Development with Yii 2 and PHP / Дж. Уайнсет; М. Сафронов .— Москва : ДМК Пресс, 2015 .— 393 с. : ил. — [Пер. с англ.] .— ISBN 978-5-97060-252-2 .— URL: https://rucont.ru/efd/795254 (дата обращения: 27.09.2025)

Предпросмотр (выдержки из произведения)

Разработка_веб-приложений_в_Yii_2.pdf
Стр.5
Стр.6
Стр.7
Стр.8
Стр.9
Стр.10
Разработка_веб-приложений_в_Yii_2.pdf
УДК 004.738.5:004.45Yii ББК 32.973.202-018.2 C21 C21 Разработка веб-приложений в Yii 2. – М.: ДМК Пресс, 2015. – 392 с.: ил. Сафронов М. ISBN 978-5-97060-252-2 Yii – это высокопроизводительный фреймворк, используемый для быстрой разработки веб-приложений на PHP. Он хорошо спроектирован, имеет прекрасную поддержку, его легко изучить и легко сопровождать. Эта книга на практических примерах покажет вам самые важные возможности Yii 2. Сквозь всю книгу проходит пример построения реального приложения – каждая глава представляет новую функциональность и показывает приёмы тонкой настройки. Вместо того, чтобы пытаться быть всеобъемлющим справочником по Yii 2, издание является руководством по тем сведениям, которые важно знать практикующему разработчику. Издание предназначено для веб-разработчиков как уже знакомых с Yii, так и начинающих пользователей фреймворка. УДК 004.738.5:004.45Yii ББК 32.973.202-018.2 All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. ISBN 978-1-78398-188-5 (анг.) ISBN 978-5-97060-252-2 (рус.) Copyright © 2014 Packt Publishing © Оформление, издание, ДМК Пресс, 2015
Стр.5
Содержание Вступительное слово от разработчика 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
Стр.6
6  Содержание Использование 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
Содержание  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
Стр.8
8  Содержание Минимизация материалов ............................................................................................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
Содержание  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
Стр.10

Облако ключевых слов *


* - вычисляется автоматически