Laravel 9. Быстрая разработка веб-сайтов на PHP + код Год издания: 2023 Автор: Дронов В. А. Издательство: БХВ-Петербург ISBN: 978-5-9775-1725-6 Серия: Профессиональное программирование Язык: Русский Формат: PDF Качество: Издательский макет или текст (eBook) Количество страниц: 763 Описание: Книга представляет собой полное описание фреймворка Laravel 9 для быстрой разработки сайтов на языке PHP. Дан краткий вводный курс для начинающих, в котором описывается разработка простого учебного сайта — электронной доски объявлений. Описаны базовые инструменты Laravel: миграции, модели, маршруты, контроллеры, шаблоны, средства обработки пользовательского ввода и сохранения выгруженных файлов, валидаторы, шаблоны, пагинаторы и инструменты разграничения доступа. Рассказано о более развитых средствах: внедрении зависимостей, провайдерах, посредниках, событиях и их обработке, отправке электронной почты, оповещениях, очередях и отложенных заданиях, встроенном планировщике, инструментах кеширования, локализации сайтов и расширении возможностей встроенной утилиты artisan. Описаны дополнительные библиотеки для обработки BBCode-тегов и CAPTCHA, вывода графических миниатюр, аутентификации через социальные сети. Рассмотрено программирование веб-служб REST, вещание по протоколу WebSocket и публикация сайта. Электронный архив на сайте издательства содержит исходный код описанного в книге сайта.
Примеры страниц
Оглавление
Предисловие ............................................................................................................................... 19 Почему именно Laravel? ............................................................................................................... 19 О чем эта книга? ............................................................................................................................ 20 Используемое ПО .......................................................................................................................... 21 Типографские соглашения ............................................................................................................ 22 ЧАСТЬ I. ОСНОВЫ LARAVEL НА ПРАКТИЧЕСКОМ ПРИМЕРЕ ................................................................ 25 Глава 1. Простейший веб-сайт — доска объявлений ........................................................................ 27 1.1. Подготовительные действия .................................................................................................. 27 1.2. Проект и его создание. Папка проекта..................................................................................... 27 Теория .......................................................................................................................................... 27 Практика ...................................................................................................................................... 28 1.3. Запуск проекта. Отладочный веб-сервер PHP ............................................................................ 29 1.4. Контроллеры и действия ........................................................................................................ 30 Теория .......................................................................................................................................... 30 Практика ...................................................................................................................................... 31 1.5. Маршруты и списки маршрутов. Фасады ................................................................................... 32 Теория .......................................................................................................................................... 32 Практика ...................................................................................................................................... 33 1.6. Настройки проекта. Подготовка проекта к работе с базой данных SQLite .................................... 34 Теория .......................................................................................................................................... 34 Практика ...................................................................................................................................... 34 1.7. Миграции ................................................................................................................................. 36 Теория .......................................................................................................................................... 36 Практика ...................................................................................................................................... 36 1.8. Модели ..................................................................................................................................... 38 1.9. Консоль Laravel ....................................................................................................................... 39 1.10. Работа с базой данных .......................................................................................................... 40 1.11. URL-параметры. Внедрение зависимостей ................................................................................ 43 Теория .......................................................................................................................................... 43 Практика ...................................................................................................................................... 44 1.12. Шаблоны ............................................................................................................................... 46 Теория .......................................................................................................................................... 46 Практика ...................................................................................................................................... 46 1.13. Наследование шаблонов....................................................................................................... 51 Теория .......................................................................................................................................... 51 Практика ...................................................................................................................................... 51 1.14. Именованные маршруты ...................................................................................................... 53 1.15. Статические файлы ............................................................................................................... 54 Глава 2. Доска объявлений 2.0: разграничение доступа, работа с объявлениями и локализация .......................................................................................... 55 2.1. Межтабличные связи. Работа со связанными записями ............................................................ 55 2.2. Вход и выход. Раздел пользователя ...................................................................................... 58 Теория .......................................................................................................................................... 58 Практика ...................................................................................................................................... 59 2.3. Добавление, правка и удаление записей ............................................................................... 64 2.4. Валидация данных .................................................................................................................. 70 2.5. Разграничение доступа. Посредники, политики и провайдеры .................................................... 72 Теория .......................................................................................................................................... 72 Практика ...................................................................................................................................... 73 2.6. Получение сведений о текущем пользователе ........................................................................... 76 2.7. Локализация веб-сайта ........................................................................................................... 76 ЧАСТЬ II. БАЗОВЫЕ ИНСТРУМЕНТЫ ................................................................................................. 81 Глава 3. Создание, настройка и отладка проекта ............................................................................. 83 3.1. Подготовка к установке.......................................................................................................... 83 3.2. Создание проекта .................................................................................................................... 83 3.2.1. Создание проекта с помощью Composer ................................................................................. 83 3.2.2. Создание проекта с помощью Laravel Installer.......................................................................... 84 3.3. Папки и файлы проекта .......................................................................................................... 85 3.4. Настройки проекта ................................................................................................................. 87 3.4.1. Две разновидности настроек проекта ............................................................................. 87 3.4.1.1. Локальные настройки ............................................................................................. 87 3.4.1.2. Рабочие настройки .................................................................................................. 88 3.4.2. Настройки проекта по категориям .................................................................................. 89 3.4.2.1. Базовые настройки проекта .................................................................................... 89 3.4.2.2. Настройки режима работы веб-сайта .................................................................... 90 3.4.2.3. Настройки шифрования .......................................................................................... 90 3.4.2.4. Настройки баз данных ............................................................................................ 91 3.4.3. Доступ к настройкам из программного кода .................................................................. 94 3.4.4. Создание своих настроек ................................................................................................. 95 3.5. Базовые инструменты отладки .............................................................................................. 96 3.5.1. Отладочный веб-сервер .................................................................................................... 96 3.5.2. Вывод сообщений об ошибках ........................................................................................ 97 Глава 4. Миграции и сидеры .......................................................................................................... 99 4.1. Миграции ................................................................................................................................. 99 4.1.1. Создание миграций ......................................................................................................... 100 4.1.2. Класс миграции ............................................................................................................... 100 4.1.3. Создание таблиц ............................................................................................................. 101 4.1.3.1. Создание полей ...................................................................................................... 101 4.1.3.2. Реализация «мягкого» удаления записей в таблицах ......................................... 105 4.1.3.3. Указание дополнительных параметров полей .................................................... 105 4.1.3.4. Создание индексов ................................................................................................ 107 4.1.3.5. Создание полей внешнего ключа ......................................................................... 108 4.1.3.6. Задание дополнительных параметров таблиц ..................................................... 111 4.1.4. Правка и удаление таблиц .............................................................................................. 111 4.1.4.1. Правка и удаление полей ...................................................................................... 111 4.1.4.2. Переименование и удаление индексов ................................................................ 113 4.1.4.3. Удаление полей внешнего ключа и управление соблюдением ссылочной целостности ..................................................................................................... 113 4.1.4.4. Переименование и удаление таблиц .................................................................... 114 4.1.5. Проверка существования таблиц и полей ..................................................................... 114 4.1.6. Указание базы данных, с которой будут работать миграции ..................................... 115 4.1.7. Обработка миграций ....................................................................................................... 115 4.1.7.1. Применение миграций .......................................................................................... 115 4.1.7.2. Откат миграций, обновление, сброс и очистка базы данных ..................................... 116 4.1.7.3. Создание журнала миграций и просмотр их состояния ............................................. 117 4.1.8. Дамп базы данных как альтернатива миграциям ......................................................... 118 4.2. Сидеры ................................................................................................................................... 118 4.2.1. Использование корневого сидера .................................................................................. 119 4.2.2. Использование подчиненных сидеров .......................................................................... 119 4.2.3. Выполнение сидеров ...................................................................................................... 120 Глава 5. Модели: базовые инструменты ...................................................................................... 121 5.1. Создание моделей ................................................................................................................. 121 5.2. Класс модели и соглашения по умолчанию ....................................................................... 122 5.3. Параметры модели................................................................................................................ 123 5.3.1. Параметры полей модели ............................................................................................... 123 5.3.2. Параметры обслуживаемой таблицы ............................................................................ 123 5.3.3. Параметры преобразования типов ................................................................................ 124 5.3.4. Реализация «мягкого» удаления записей в моделях .................................................... 127 5.4. Создание связей между моделями ....................................................................................... 127 5.4.1. Связь «один-со-многими» .............................................................................................. 127 5.4.2. Связь «один-с-одним из многих» .................................................................................. 129 5.4.3. Связь «один-с-одним» .................................................................................................... 131 5.4.4. Связь «многие-со-многими» .......................................................................................... 131 5.4.4.1. Использование связующих моделей ........................................................................... 135 5.4.5. Пометка записи первичной модели как исправленной при правке или удалении связанных записей вторичной модели .................................................................................... 136 5.4.6. Сквозная связь «один-со-многими» .............................................................................. 136 5.4.7. Сквозная связь «один-с-одним» .................................................................................... 137 5.4.8. Записи-заглушки ............................................................................................................. 137 5.4.9. Замкнутая связь ............................................................................................................... 138 5.5. Методы моделей ................................................................................................................... 139 5.6. Преобразователи. Акцессоры и мутаторы .......................................................................... 139 5.6.1. Виртуальные поля ........................................................................................................... 141 5.6.2. Акцессоры и мутаторы в предыдущих версиях Laravel ...................................................... 141 Глава 6. Запись данных.......................................................................................................... 143 6.1. Добавление, правка и удаление записей с помощью моделей .......................................... 143 6.1.1. Добавление записей. Построитель запросов ................................................................ 143 6.1.2. Правка записей ................................................................................................................ 145 6.1.2.1. Правка значений отдельных полей ...................................................................... 146 6.1.2.2. Проверка, значения каких полей изменились ..................................................... 147 6.1.3. Удаление записей ........................................................................................................... 149 6.1.3.1. «Мягкое» удаление записей .................................................................................. 149 6.1.4. Работа со связанными записями .................................................................................... 150 6.1.4.1. Связи «один-со-многими» и «один-с-одним»: связывание существующих записей ...................................................................................................... 150 6.1.4.2. Связи «один-со-многими» и «один-с-одним»: добавление и правка связанных записей .............................................................................................................. 151 6.1.4.3. Связь «один-с-одним из многих» ............................................................................... 152 6.1.4.4. Связь «многие-со-многими»: связывание записей ........................................................ 153 6.1.4.5. Связь «многие-со-многими»: добавление и правка связанных записей .......................... 155 6.1.5. Копирование записей ..................................................................................................... 156 6.2. Массовые добавление, правка и удаление записей ............................................................ 156 6.2.1. Массовое добавление записей ....................................................................................... 156 6.2.2. Массовая правка записей ............................................................................................... 158 6.2.3. Массовое удаление записей ........................................................................................... 159 6.2.4. Использование фасада DB для записи данных ............................................................. 159 Глава 7. Выборка данных ......................................................................................................... 161 7.1. Извлечение значений из полей записи ................................................................................ 161 7.2. Доступ к связанным записям ............................................................................................... 161 7.2.1. Связь «один-со-многими»: доступ к связанным записям ............................................ 161 7.2.2. Связь «один-с-одним из многих»: доступ к связанным записям ................................ 162 7.2.3. Связь «один-с-одним»: доступ к связанным записям .................................................. 163 7.2.4. Связь «многие-со-многими»: доступ к связанным записям ........................................ 163 7.3. Выборка записей: базовые средства ................................................................................... 164 7.3.1. Выборка всех записей .................................................................................................... 164 7.3.2. Извлечение первой записи ............................................................................................. 164 7.3.3. Поиск записей ................................................................................................................. 165 7.3.4. Фильтрация записей ....................................................................................................... 167 7.3.4.1. Фильтрация записей по значениям полей типа JSON ....................................................... 172 7.3.4.2. Фильтрация по полнотекстовому индексу ........................................................................ 173 7.3.5. Сортировка записей ........................................................................................................ 174 7.3.6. Выборка указанного количества записей ..................................................................... 175 7.3.7. Выборка уникальных записей ....................................................................................... 175 7.3.8. Задание параметров запросов на основании выполнения указанного условия ................... 176 7.3.9. Смена типа выдаваемых значений ................................................................................ 176 7.3.10. Выполнение запроса и получение результата ............................................................ 176 7.3.11. Проверка наличия записей в полученном результате................................................ 177 7.3.12. Объединение результатов от разных запросов .......................................................... 177 7.4. Выборка связанных записей ................................................................................................ 178 7.5. Выборка записей: расширенные средства .......................................................................... 182 7.5.1. Указание выбираемых полей ......................................................................................... 182 7.5.2. Вставка фрагментов SQL-кода в запрос ....................................................................... 183 7.5.3. Связывание таблиц ......................................................................................................... 183 7.5.4. Использование вложенных запросов ............................................................................ 186 7.5.5. Использование фасада DB для выборки данных ......................................................... 189 7.6. Агрегатные вычисления ....................................................................................................... 189 7.6.1. Агрегатные вычисления по всем записям .................................................................... 189 7.6.2. Агрегатные вычисления по группам записей ............................................................... 190 7.6.3. Агрегатные вычисления по связанным записям .......................................................... 192 7.7. Извлечение «мягко» удаленных записей ............................................................................ 194 7.8. Сравнение записей ................................................................................................................ 195 7.9. Получение значения заданного поля................................................................................... 195 7.10. Повторное считывание записей ......................................................................................... 196 Глава 8. Маршрутизация ........................................................................................................... 197 8.1. Настройки маршрутизатора ................................................................................................. 197 8.2. Списки маршрутов................................................................................................................ 198 8.3. Создание простых маршрутов ............................................................................................. 198 8.3.1. Специализированные маршруты ................................................................................... 199 8.3.2. Резервный маршрут ........................................................................................................ 200 8.4. Именованные маршруты ...................................................................................................... 200 8.5. URL-параметры и параметризованные маршруты ............................................................ 201 8.5.1. Указание правил для значений URL-параметров ........................................................ 202 8.5.2. Внедрение моделей......................................................................................................... 203 8.5.2.1. Неявное внедрение моделей ................................................................................. 203 8.5.2.2. Явное внедрение моделей ..................................................................................... 205 8.5.3. Внедрение перечислений ............................................................................................... 207 8.5.4. Значения по умолчанию для URL-параметров ............................................................ 207 8.6. Дополнительные параметры маршрутов ............................................................................ 209 8.7. Группы маршрутов ............................................................................................................... 210 8.8. Маршруты на ресурсные контроллеры ............................................................................... 211 8.8.1. Маршруты на подчиненные ресурсные контроллеры ................................................. 213 8.8.2. Дополнительные параметры маршрутов на ресурсные контроллеры ....................... 213 8.9. Как Laravel обрабатывает списки маршрутов? .................................................................. 215 8.10. Вывод списка созданных маршрутов ................................................................................ 215 Глава 9. Контроллеры и действия. Обработка запросов и генерирование ответов ........................................................................................................................... 217 9.1. Разновидности контроллеров и особенности работы с ними ........................................... 217 9.1.1. Контроллеры-функции ................................................................................................... 217 9.1.2. Контроллеры-классы ...................................................................................................... 218 9.1.2.1. Ресурсные контроллеры ....................................................................................... 218 9.1.2.2. Контроллеры одного действия ............................................................................. 220 9.1.2.3. Создание контроллеров-классов .......................................................................... 220 9.1.2.4. Связывание посредников с контроллерами ........................................................ 221 9.2. Внедрение зависимостей в контроллерах ........................................................................... 221 9.3. Обработка клиентских запросов .......................................................................................... 222 9.3.1. Извлечение данных, отправленных посетителем ........................................................ 223 9.3.2. Как узнать, присутствует ли в запросе нужное значение? .......................................... 225 9.3.3. Добавление в запрос произвольных значений ............................................................. 226 9.3.4. Получение сведений о запросе ...................................................................................... 227 9.4. Генерирование интернет-адресов ........................................................................................ 231 9.5. Генерирование серверных ответов ...................................................................................... 233 9.5.1. Ответы на основе шаблонов .......................................................................................... 233 9.5.1.1. Ответы в виде объектов класса View ................................................................... 233 9.5.1.2. Ответы в виде объектов класса Response ............................................................ 234 9.5.2. Специальные ответы ...................................................................................................... 235 9.5.2.1. Отправка файла для отображения в веб-обозревателе ....................................... 235 9.5.2.2. Отправка файла для сохранения на локальном диске ........................................ 235 9.5.2.3. Отправка данных в форматах JSON и JSONP..................................................... 236 9.5.2.4. Текстовый ответ .................................................................................................... 237 9.5.2.5. «Пустой» ответ ...................................................................................................... 237 9.5.3. Дополнительные параметры ответов ............................................................................ 237 9.5.4. Перенаправления ............................................................................................................ 238 9.6. Обработка ошибок ................................................................................................................ 240 Глава 10. Обработка введенных данных. Валидация .................................................................... 242 10.1. Извлечение введенных данных .......................................................................................... 242 10.2. Валидация данных .............................................................................................................. 244 10.2.1. Валидаторы ................................................................................................................... 244 10.2.1.1. Быстрая валидация с неявным созданием валидатора ..................................... 244 10.2.1.2. Валидация с явным созданием валидатора ....................................................... 246 10.2.2. Формальные запросы ................................................................................................... 249 10.2.3. Правила валидации и написание их наборов ............................................................. 252 10.2.3.1. Валидация паролей .............................................................................................. 261 10.2.3.2. Валидация массивов элементов управления ..................................................... 262 10.2.4. Написание сообщений об ошибках ввода .................................................................. 264 10.2.4.1. Подстановки наименований ............................................................................... 265 10.2.5. Извлечение ранее введенных данных ......................................................................... 265 10.2.6. Извлечение сообщений об ошибках ввода ................................................................. 266 10.2.7. Создание своих правил валидации .............................................................................. 267 10.2.7.1. Правила-функции ................................................................................................ 267 10.2.7.2. Правила-расширения .......................................................................................... 267 10.2.7.3. Правила-объекты ................................................................................................. 268 10.3. Предварительная обработка введенных данных .............................................................. 270 10.4. Вывод веб-страниц добавления, правки и удаления записей .......................................... 272 Глава 11. Шаблоны: базовые инструменты ................................................................................ 274 11.1. Настройки шаблонизатора ................................................................................................. 274 11.2. Директивы шаблонизатора ................................................................................................ 275 11.2.1. Директивы вывода данных .......................................................................................... 275 11.2.1.1. Вывод данных в формате JSON .................................................................................. 276 11.2.2. Управляющие директивы ............................................................................................. 276 11.2.2.1. Условные директивы и директивы выбора .................................................................. 276 11.2.2.2. Директивы циклов .................................................................................................... 278 11.2.3. Прочие директивы ........................................................................................................ 280 11.2.4. Запрет на обработку директив ..................................................................................... 281 11.3. Вывод веб-форм и элементов управления ........................................................................ 282 11.3.1. Вывод веб-форм ............................................................................................................ 282 11.3.2. Вывод элементов управления ...................................................................................... 283 11.3.3. Вывод сообщений об ошибках ввода .......................................................................... 284 11.4. Наследование шаблонов..................................................................................................... 285 11.5. Стеки .................................................................................................................................... 288 11.6. Включаемые шаблоны ....................................................................................................... 290 11.6.1. Псевдонимы включаемых шаблонов .......................................................................... 291 11.7. Компоненты ........................................................................................................................ 291 11.7.1. Полнофункциональные компоненты .......................................................................... 292 11.7.1.1. Создание полнофункциональных компонентов ............................................... 292 11.7.1.2. Передача данных в компоненты. Атрибуты компонентов .............................. 295 11.7.1.3. Передача HTML-содержимого в компоненты. Слоты ..................................... 298 11.7.2. Упрощенные компоненты ............................................................................................ 299 11.7.2.1. Бесшаблонные компоненты ............................................................................... 299 11.7.2.2. Бесклассовые компоненты ................................................................................. 300 11.7.3. Динамический компонент ............................................................................................ 301 11.8. Передача данных в шаблоны: другие способы ................................................................ 302 11.8.1. Разделяемые значения .................................................................................................. 302 11.8.2. Составители значений .................................................................................................. 303 11.8.3. Создатели значений ...................................................................................................... 304 11.9. Обработка статических файлов ......................................................................................... 305 Глава 12. Пагинация ............................................................................................................... 307 12.1. Автоматическое создание пагинатора .............................................................................. 307 12.2. Дополнительные параметры пагинатора .......................................................................... 310 12.3. Настройка отображения пагинатора ................................................................................. 311 12.4. Создание пагинатора вручную .......................................................................................... 314 Глава 13. Разграничение доступа: базовые инструменты ......................................................... 316 13.1. Настройки подсистемы разграничения доступа .............................................................. 316 13.2. Создание недостающих модулей, реализующих разграничение доступа ...................... 318 13.3. Маршруты, ведущие на контроллеры разграничения доступа ....................................... 319 13.4. Служебные таблицы и модель ........................................................................................... 321 13.5. Регистрация новых пользователей .................................................................................... 322 13.6. Вход на веб-сайт ................................................................................................................. 325 13.7. Раздел пользователя ........................................................................................................... 327 13.8. Собственно разграничение доступа .................................................................................. 327 13.8.1. Разграничение доступа: простейшие инструменты ................................................... 327 13.8.1.1. Разграничение доступа с помощью посредников ............................................. 327 13.8.1.2. Разграничение доступа в шаблонах ................................................................... 328 13.8.2. Гейты ............................................................................................................................. 329 13.8.2.1. Написание гейтов ................................................................................................ 329 13.8.2.2. Разграничение доступа посредством гейтов ..................................................... 330 13.8.2.3. Перехватчики ....................................................................................................... 332 13.8.2.4. Гейты с развернутыми ответами ........................................................................ 333 13.8.2.5. Простые гейты ..................................................................................................... 334 13.8.3. Политики ....................................................................................................................... 335 13.8.3.1. Создание и регистрация политик ....................................................................... 335 13.8.3.2. Разграничение доступа посредством политик .................................................. 338 13.8.3.3. Разграничение доступа в ресурсных контроллерах.......................................... 341 13.8.4. Разграничение доступа с помощью формальных запросов ...................................... 341 13.9. Получение сведений о текущем пользователе ................................................................. 342 13.10. Подтверждение пароля ..................................................................................................... 343 13.11. Выход с веб-сайта ............................................................................................................. 344 13.12. Проверка существования адреса электронной почты ................................................... 344 13.13. Сброс пароля ..................................................................................................................... 347 13.13.1. Отправка электронного письма с гиперссылкой сброса пароля ............................. 347 13.13.2. Собственно сброс пароля ........................................................................................... 348 13.13.3. Удаление устаревших жетонов сброса пароля ......................................................... 349 Глава 14. Обработка строк, массивов и функции-хелперы ......................................................... 350 14.1. Обработка строк.................................................................................................................. 350 14.1.1. Составление строк ........................................................................................................ 351 14.1.2. Сравнение строк и получение сведений о строках .................................................... 352 14.1.3. Преобразование строк .................................................................................................. 353 14.1.4. Извлечение фрагментов строк ..................................................................................... 358 14.1.5. Поиск и замена в строках ............................................................................................. 360 14.1.6. Обработка путей к файлам ........................................................................................... 364 14.1.7. Прочие инструменты для обработки строк ................................................................ 365 14.2. Обработка массивов ........................................................................................................... 367 14.2.1. Добавление, правка и удаление элементов массивов ................................................ 367 14.2.2. Извлечение элементов массива ................................................................................... 369 14.2.3. Проверка существования элементов массивов .......................................................... 371 14.2.4. Получение сведений о массиве ................................................................................... 372 14.2.5. Упорядочивание элементов массивов ........................................................................ 373 14.2.6. Прочие инструменты для обработки массивов .......................................................... 373 14.3. Функции-хелперы ............................................................................................................... 375 14.3.1. Функции, выдающие пути к ключевым папкам ......................................................... 376 14.3.2. Служебные функции ..................................................................................................... 376 Глава 15. Коллекции Laravel ...................................................................................................... 380 15.1. Обычные коллекции ........................................................................................................... 380 15.1.1. Создание обычных коллекций ..................................................................................... 380 15.1.2. Добавление, правка и удаление элементов коллекции .............................................. 381 15.1.3. Извлечение отдельных элементов и частей коллекции ............................................. 383 15.1.4. Получение сведений об элементах коллекции ........................................................... 389 15.1.5. Перебор элементов коллекции .................................................................................... 390 15.1.6. Поиск и фильтрация элементов коллекции ................................................................ 391 15.1.7. Упорядочивание элементов коллекции ...................................................................... 396 15.1.8. Группировка элементов коллекций ............................................................................. 398 15.1.9. Агрегатные вычисления в коллекциях ........................................................................ 399 15.1.10. Получение сведений о коллекции ............................................................................. 400 15.1.11. Прочие инструменты для обработки коллекций ........................................................ 401 15.2. Коллекции, заполняемые по запросу ................................................................................ 406 15.2.1. Создание коллекций, заполняемых по запросу .......................................................... 406 15.2.2. Работа с коллекциями, заполняемыми по запросу .................................................... 406 ЧАСТЬ III. РАСШИРЕННЫЕ ИНСТРУМЕНТЫ И ДОПОЛНИТЕЛЬНЫЕ БИБЛИОТЕКИ ..................................................................................... 409 Глава 16. Базы данных и модели: расширенные инструменты ................................................. 411 16.1. Отложенная и немедленная выборка связанных записей................................................ 411 16.2. Выборка наборов записей по частям ................................................................................ 413 16.3. Фильтрующие связи «многие-со-многими» ..................................................................... 415 16.4. Полиморфные связи ........................................................................................................... 417 16.4.1. Создание поля внешнего ключа для полиморфной связи ......................................... 417 16.4.2. Создание полиморфных связей ................................................................................... 418 16.4.2.1. Полиморфная связь «один-со-многими» ........................................................... 418 16.4.2.2. Полиморфная связь «один-с-одним из многих» ............................................... 420 16.4.2.3. Полиморфная связь «один-с-одним» ................................................................. 420 16.4.2.4. Полиморфная связь «многие-со-многими» ....................................................... 421 16.4.3. Работа с записями, связанными полиморфной связью ............................................. 423 16.4.4. Указание своих типов связываемых записей ............................................................. 424 16.5. Пределы ............................................................................................................................... 426 16.5.1. Локальные пределы ...................................................................................................... 426 16.5.2. Глобальные пределы .................................................................................................... 427 16.6. Выполнение «сырых» SQL-запросов ................................................................................ 429 16.6.1. «Сырые» вызовы функций СУБД ................................................................................ 429 16.6.2. «Сырые» команды SQL ................................................................................................ 429 16.5.3. «Сырые» SQL-запросы целиком.................................................................................. 431 16.7. Блокировка записей ............................................................................................................ 432 16.8. Управление транзакциями ................................................................................................. 432 16.8.1. Автоматическое управление транзакциями ............................................................... 433 16.8.2. Ручное управление транзакциями ............................................................................... 433 16.9. Очистка моделей ................................................................................................................. 433 Глава 17. Шаблоны: расширенные инструменты и дополнительные библиотеки ................................................................................................... 436 17.1. Библиотека Laravel HTML: создание веб-форм и элементов управления ............................... 436 17.1.1. Создание элементов управления ................................................................................. 436 17.1.2. Создание веб-форм ....................................................................................................... 439 17.1.3. Создание гиперссылок ................................................................................................. 441 17.2. Библиотека genert/bbcode: поддержка BBCode ................................................................ 443 17.2.1. Использование библиотеки genert/bbcode .................................................................. 443 17.2.2. Поддерживаемые BBCode-теги ................................................................................... 444 17.2.3. Добавление своих BBCode-тегов ................................................................................ 445 17.3. Библиотека Captcha for Laravel: поддержка CAPTCHA .................................................. 446 17.3.1. Настройка Captcha for Laravel ..................................................................................... 447 17.3.2. Использование Captcha for Laravel .............................................................................. 448 17.4. Написание своих директив шаблонизатора ...................................................................... 449 17.4.1. Написание простейших директив ................................................................................ 450 17.4.1.1. Форматировщики объектов ................................................................................ 451 17.4.2. Написание условных директив .................................................................................... 451 17.5. Пакет Laravel Mix ............................................................................................................... 452 17.5.1. Исходные файлы и их расположение .......................................................................... 453 17.5.2. Конфигурирование Laravel Mix ................................................................................... 453 17.5.2.1. Обработка таблиц стилей ................................................................................... 454 17.5.2.2. Обработка веб-сценариев ................................................................................... 455 17.5.2.3. Копирование файлов и папок ............................................................................. 456 17.5.2.4. Мечение файлов .................................................................................................. 457 17.5.3. Запуск Laravel Mix ........................................................................................................ 458 17.6. Использование Bootstrap .................................................................................................... 459 Глава 18. Обработка выгруженных файлов .............................................................................. 461 18.1. Настройки подсистемы обработки выгруженных файлов .............................................. 461 18.2. Создание символических ссылок на папки с выгруженными файлами ......................... 464 18.3. Хранение выгруженных файлов ........................................................................................ 465 18.4. Базовые средства для обработки выгруженных файлов .................................................. 465 18.4.1. Валидаторы для выгруженных файлов ....................................................................... 465 18.4.2. Получение выгруженных файлов ................................................................................ 467 18.4.3. Получение сведений о выгруженных файлах ............................................................. 467 18.4.4. Сохранение выгруженных файлов .............................................................................. 468 18.4.5. Выдача выгруженных файлов посетителям ............................................................... 470 18.4.5.1. Вывод выгруженных файлов .............................................................................. 470 18.4.5.2. Реализация загрузки выгруженного файла ....................................................... 471 18.4.6. Удаление выгруженных файлов .................................................................................. 472 18.5. Расширенные средства для работы с выгруженными файлами ...................................... 472 18.5.1. Чтение из файлов и запись в них ................................................................................. 473 18.5.2. Получение сведений о файле ....................................................................................... 473 18.5.3. Прочие манипуляции с файлами ................................................................................. 474 18.5.4. Работа с папками .......................................................................................................... 475 18.6. Библиотека bkwld/croppa: вывод миниатюр ..................................................................... 475 18.6.1. Настройки библиотеки bkwld/croppa .......................................................................... 476 18.6.2. Использование библиотеки bkwld/croppa ................................................................... 478 18.6.3. Удаление миниатюр ..................................................................................................... 481 Глава 19. Безопасность и разграничение доступа: расширенные инструменты и дополнительная библиотека ...................................................... 482 19.1. Низкоуровневые средства для работы с пользователями ............................................... 482 19.1.1. Низкоуровневые средства для регистрации пользователей ...................................... 482 19.1.2. Низкоуровневые средства для входа ........................................................................... 483 19.1.3. Низкоуровневые средства для выполнения выхода .................................................. 485 19.1.4. Низкоуровневые средства для подтверждения пароля .............................................. 485 19.1.5. Низкоуровневые средства для проверки существования адреса электронной почты ................................................................................................................... 486 19.1.6. Низкоуровневые средства для сброса пароля ............................................................ 487 19.1.7. Корректная правка пароля ........................................................................................... 490 19.2. Библиотека Laravel Socialite: вход через сторонние интернет-службы ......................... 491 19.2.1. Создание приложения «ВКонтакте» ........................................................................... 491 19.2.2. Установка и настройка Laravel Socialite ..................................................................... 493 19.2.3. Использование Laravel Socialite .................................................................................. 494 19.2.3.1. Действие первое: обращение к сторонней интернет-службе ........................... 495 19.2.3.2. Действие второе: поиск (регистрация) пользователя и вход ........................... 495 19.2.3.3. Завершающие операции: создание маршрутов и гиперссылки входа ............ 496 19.3. Защита от атак CSRF .......................................................................................................... 497 19.4. Ограничители частоты запросов ....................................................................................... 498 19.4.1. Простейшие ограничители частоты запросов ............................................................ 498 19.4.2. Именованные ограничители частоты запросов.......................................................... 499 19.4.3. Низкоуровневые ограничители частоты запросов ..................................................... 501 Глава 20. Внедрение зависимостей, провайдеры и фасады ...................................................... 504 20.1. Внедрение зависимостей .................................................................................................... 504 20.1.1. Простейшие случаи внедрения зависимостей ............................................................ 504 20.1.2. Управление внедрением зависимостей ....................................................................... 506 20.1.2.1. Простая регистрация классов и объектов ......................................................... 506 20.1.2.2. Подмена классов и реализации .......................................................................... 509 20.1.2.3. Гибкая подмена классов и реализации .............................................................. 510 20.1.2.4. Гибкая регистрация значений произвольного типа .......................................... 511 20.1.2.5. Переопределение регистрации ........................................................................... 512 20.1.2.6. Вызов методов и функций, в которых используется внедрение зависимостей ...................................................................................................................... 512 20.1.2.7. Подмена методов ................................................................................................. 514 20.2. Провайдеры ......................................................................................................................... 515 20.2.1. Список провайдеров, используемых веб-сайтом ....................................................... 515 20.2.2. Создание своих провайдеров ....................................................................................... 517 20.3. Фасады ................................................................................................................................. 518 Глава 21. Посредники .................................................................................................................. 520 21.1. Посредники, используемые веб-сайтом ............................................................................ 520 21.1.1. Управление очередностью выполнения посредников ............................................... 523 21.1.2. Параметры посредников .............................................................................................. 523 21.2. Написание своих посредников .......................................................................................... 523 21.2.1. Как исполняется посредник? ....................................................................................... 523 21.2.2. Создание посредников ................................................................................................. 524 21.2.3. Посредники с завершающими действиями ................................................................ 526 Глава 22. События и их обработка .......................................................................................... 528 22.1. События-классы .................................................................................................................. 528 22.1.1. Обработка событий-классов: слушатели .................................................................... 528 22.1.1.1. Создание слушателей-классов ............................................................................ 528 22.1.1.2. Явная привязка слушателей-классов к событиям ............................................. 530 22.1.1.3. Автоматическая привязка слушателей-классов к событиям ........................... 531 22.1.1.4. Слушатели-функции ............................................................................................ 532 22.1.1.5. Просмотр списков слушателей, привязанных к событиям-классам ............... 532 22.1.2. Обработка событий-классов: подписчики .................................................................. 533 22.1.3. События-классы, поддерживаемые фреймворком ..................................................... 534 22.1.3.1. События подсистемы разграничения доступа .................................................. 534 22.1.3.2. События других подсистем ................................................................................ 536 22.1.4. Создание и использование своих событий-классов ................................................... 536 22.1.4.1. Создание событий-классов ................................................................................. 536 22.1.4.2. Создание событий-классов и их слушателей .................................................... 537 22.1.4.3. Генерирование своих событий ........................................................................... 538 22.2. События-строки .................................................................................................................. 538 22.2.1. Привязка обработчиков к событиям-строкам ............................................................ 539 22.2.2. Генерирование событий-строк .................................................................................... 539 22.3. События моделей ................................................................................................................ 540 22.3.1. Обработка событий моделей ....................................................................................... 540 22.3.1.1. Обработка событий моделей посредством слушателей-функций ................... 540 22.3.1.2. Связывание событий моделей с событиями-классами ..................................... 540 22.3.1.3. Использование обозревателей ............................................................................ 541 22.3.2. Список событий моделей ............................................................................................. 542 22.3.3. Временное отключение событий в моделях ............................................................... 543 Глава 23. Отправка электронной почты ................................................................................. 544 23.1. Настройки подсистемы отправки электронной почты .................................................... 544 23.2. Создание электронных писем ............................................................................................ 547 23.2.1. Создание классов электронных писем ........................................................................ 547 23.2.2. Генерирование электронных писем ............................................................................ 548 23.2.3. Написание шаблонов электронных писем .................................................................. 551 23.2.4. Написание электронных писем на языке Markdown .................................................. 552 23.2.4.1. Классы писем, написанных на Markdown ......................................................... 552 23.2.4.2. Написание шаблонов писем на Markdown ........................................................ 552 23.2.4.3. Управление генерированием писем, написанных на Markdown ................................. 553 23.3. Отправка электронных писем ............................................................................................ 555 23.4. Предварительный просмотр электронных писем ............................................................ 556 23.5. События, генерируемые при отправке электронных писем ............................................ 557 23.6. Доступ к письмам, отправленным посредством службы array ...................................... 557 Глава 24. Оповещения ................................................................................................ 558 24.1. Создание оповещений ........................................................................................................ 558 24.2. Написание оповещений ...................................................................................................... 560 24.2.1. Почтовые оповещения ................................................................................................. 560 24.2.1.1. Генерирование простых почтовых оповещений ............................................... 560 24.2.1.2. Генерирование почтовых оповещений на основе текстовых и HTML-шаблонов ............................................................................................................. 562 24.2.1.3. Генерирование почтовых оповещений на основе Markdown-шаблонов ........ 562 24.2.1.4. Указание адреса получателя ............................................................................... 563 24.2.2. SMS-оповещения .......................................................................................................... 563 24.2.2.1. Подготовительные действия и настройка службы SMS-оповещений ............ 563 24.2.2.2. Генерирование произвольных SMS-оповещений ............................................. 564 24.2.2.3. Указание телефона получателя .......................................................................... 565 24.2.3. Slack-оповещения ......................................................................................................... 565 24.2.3.1. Генерирование Slack-оповещений ..................................................................... 565 24.2.3.2. Добавление вложений ......................................................................................... 566 24.2.3.3. Указание интернет-адреса получателя .............................................................. 568 24.2.4. Табличные оповещения................................................................................................ 568 24.2.4.1. Создание таблицы для хранения табличных оповещений ............................... 568 24.2.4.2. Генерирование табличных оповещений ............................................................ 569 24.2.5. Оповещения, отправляемые по нескольким каналам ................................................ 570 24.3. Отправка оповещений ........................................................................................................ 570 24.3.1. Отправка оповещений произвольным получателям .................................................. 571 24.4. Предварительный просмотр почтовых оповещений ....................................................... 571 24.5. Работа с табличными оповещениями ................................................................................ 571 24.6. События, генерируемые при отправке оповещений ........................................................ 573 Глава 25. Очереди и отложенные задания ................................................................................ 574 25.1. Настройка подсистемы очередей ...................................................................................... 574 25.1.1. Настройка самих очередей........................................................................................... 574 25.1.2. Подготовка таблиц для хранения отложенных заданий ............................................ 577 25.1.3. Настройка баз данных Redis ........................................................................................ 578 25.2. Отложенные задания-классы ............................................................................................. 579 25.2.1. Создание отложенных заданий-классов ..................................................................... 579 25.2.1.1. Создание отложенных заданий-классов: базовые инструменты ..................... 579 25.2.1.2. Параметры отложенных заданий-классов ......................................................... 581 25.2.1.3. Обработка ошибок в отложенных заданиях-классах ....................................... 583 25.2.1.4. Взаимодействие с очередью ............................................................................... 584 25.2.1.5. Уникальные задания ........................................................................................... 584 25.2.1.6. Неотложные задания ........................................................................................... 586 25.2.2. Запуск отложенных заданий-классов .......................................................................... 586 25.3. Отложенные задания-функции .......................................................................................... 587 25.4. Цепочки отложенных заданий ........................................................................................... 588 25.5. Специфические разновидности отложенных заданий ..................................................... 589 25.5.1. Отложенные слушатели событий ................................................................................ 589 25.5.2. Отложенные электронные письма............................................................................... 591 25.5.3. Отложенные оповещения ............................................................................................. 593 25.6. Выполнение отложенных заданий .................................................................................... 594 25.6.1. Запуск обработчика отложенных заданий .................................................................. 594 25.6.2. Работа с проваленными заданиями ............................................................................. 596 25.6.3. Очистка очереди заданий ............................................................................................. 597 25.7. Пакеты отложенных заданий ............................................................................................. 597 25.7.1. Подготовка таблицы для хранения пакетов отложенных заданий ........................... 598 25.7.2. Создание отложенных заданий, пригодных для использования в пакетах .............. 598 25.7.3. Создание и запуск пакетов отложенных заданий ...................................................... 598 25.7.4. Взаимодействие с выполняющимся пакетом ............................................................. 600 25.7.5. Получение сведений о пакете ...................................................................................... 601 25.7.6. Выполнение пакетов отложенных заданий ................................................................ 602 25.8. Посредники отложенных заданий ..................................................................................... 603 25.8.1. Ограничение частоты выполнения заданий ............................................................... 603 25.8.2. Предотвращение наложения заданий ......................................................................... 604 25.8.3. Отложенное выполнение ошибочных заданий .......................................................... 605 25.9. События, генерируемые при выполнении отложенных заданий .................................... 607 Глава 26. Cookie, сессии, всплывающие сообщения и криптография ........................................... 609 26.1. Cookie .................................................................................................................................. 609 26.1.1. Настройки cookie .......................................................................................................... 609 26.1.2. Создание cookie ............................................................................................................ 609 26.1.3. Считывание cookie ........................................................................................................ 611 26.1.4. Удаление cookie ............................................................................................................ 612 26.2. Сессии .................................................................................................................................. 612 26.2.1. Подготовка к работе с сессиями .................................................................................. 613 26.2.1.1. Настройки сессий ................................................................................................ 613 26.2.1.2. Создание таблицы для хранения сессий ............................................................ 614 26.2.2. Работа с сессиями ......................................................................................................... 615 26.2.2.1. Запись данных в сессию и их изменение........................................................... 615 26.2.2.2. Чтение данных из сессии .................................................................................... 616 26.2.2.3. Удаление данных из сессии ................................................................................ 616 26.2.2.4. Блокировка сессий .............................................................................................. 617 26.2.2.5. Предотвращение сетевых атак на сессии .......................................................... 617 26.3. Всплывающие сообщения .................................................................................................. 618 26.4. Криптография...................................................................................................................... 619 26.4.1. Шифрование данных .................................................................................................... 619 26.4.2. Хеширование и сверка паролей ................................................................................... 620 26.4.2.1. Настройки хеширования ..................................................................................... 620 26.4.2.2. Хеширование и сверка ........................................................................................ 620 26.4.3. Генерирование подписанных интернет-адресов ........................................................ 621 Глава 27. Планировщик заданий ............................................................................................. 624 27.1. Создание заданий планировщика ...................................................................................... 624 27.1.1. Как пишутся задания планировщика? ......................................................................... 624 27.1.2. Параметры заданий планировщика ............................................................................. 626 27.1.2.1. Расписание запуска заданий ............................................................................... 626 27.1.2.2. Дополнительные параметры заданий ................................................................ 628 27.1.3. Обработка вывода, генерируемого заданиями планировщика ................................. 630 27.1.4. Исполнение указанного кода перед выполнением задания и после него ................ 631 27.1.5. Отправка сигналов по указанным интернет-адресам ................................................ 631 27.2. Работа с заданиями планировщика ................................................................................... 632 27.2.1. Запуск планировщика заданий .................................................................................... 632 27.2.1.1. Запуск с использованием штатного планировщика операционной системы ...................................................................................................... 632 27.2.1.2. Запуск в независимом режиме ........................................................................... 634 27.2.2. Вывод списка заданий планировщика ........................................................................ 634 27.2.3. Удаление распределенных блокировок ...................................................................... 635 27.3. События, генерируемые при выполнении заданий планировщика ................................ 635 Глава 28. Локализация ........................................................................................................... 636 28.1. Быстрая локализация .......................................................................................................... 636 28.2. Локализация с применением обозначений ....................................................................... 637 28.2.1. Подстановка параметров в переведенные строки ...................................................... 639 28.2.2. Вывод существительных во множественном числе .................................................. 639 28.2.3. Локализация сообщений об ошибках ввода ............................................................... 641 28.3. Реализация переключения на другой язык ....................................................................... 642 28.4. Библиотека Laravel Lang: локализация на множество языков ........................................ 644 Глава 29. Кеширование .......................................................................................................... 646 29.1. Кеширование на стороне сервера ...................................................................................... 646 29.1.1. Подготовка подсистемы кеширования ....................................................................... 646 29.1.1.1. Настройка подсистемы кеширования ................................................................ 646 29.1.1.2. Создание таблицы для хранения кеша .............................................................. 648 29.1.2. Работа с кешем стороны сервера ................................................................................ 649 29.1.2.1. Сохранение данных в кеше и их правка ............................................................ 649 29.1.2.2. Чтение данных из кеша ....................................................................................... 650 29.1.2.3. Удаление данных из кеша................................................................................... 651 29.1.3. Распределенные блокировки ....................................................................................... 652 29.1.3.1. Немедленные распределенные блокировки ...................................................... 652 29.1.3.2. Распределенные блокировки с ожиданием ....................................................... 654 29.1.3.3. Передача распределенных блокировок между процессами ....................................... 655 29.1.4. События, генерируемые кешем ................................................................................... 656 29.2. Кеширование на стороне клиента ..................................................................................... 657 Глава 30. Разработка веб-служб ............................................................................................ 658 30.1. Бэкенды: преобразование данных — базовые инструменты .......................................... 658 30.1.1. Выдача данных в формате JSON ................................................................................. 659 30.1.2. Задание структуры генерируемых JSON-объектов .................................................... 661 30.2. Бэкенды: преобразование данных — ресурсы и ресурсные коллекции ......................... 664 30.2.1. Ресурсы .......................................................................................................................... 664 30.2.1.1. Написание ресурсов ............................................................................................ 664 30.2.1.2. Задание структуры JSON-объектов, генерируемых ресурсами ................................. 665 30.2.1.3. Дополнительные параметры ресурсов .............................................................. 668 30.2.1.4. Использование ресурсов ..................................................................................... 669 30.2.2. Ресурсные коллекции ................................................................................................... 670 30.2.2.1. Быстрое JSON-кодирование коллекции записей .............................................. 670 30.2.2.2. Написание ресурсных коллекций....................................................................... 670 30.2.2.3. Пагинация в ресурсных коллекциях .................................................................. 673 30.3. Бэкенды: обработка данных ............................................................................................... 674 30.3.1. Выдача записей ............................................................................................................. 674 30.3.2. Добавление, правка и удаление записей ..................................................................... 674 30.3.3. Совмещенная обработка данных ................................................................................. 676 30.4. Бэкенды: разграничение доступа....................................................................................... 676 30.5. Фронтенды: взаимодействие с бэкендами ........................................................................ 679 30.6. Фронтенды: использование React и Vue ........................................................................... 681 Глава 31. Вещание .................................................................................................................. 683 31.1. Бэкенд: подготовка подсистемы вещания ........................................................................ 683 31.1.1. Настройка подсистемы вещания ................................................................................. 683 31.1.2. Подготовка проекта к реализации вещания ............................................................... 685 31.1.3. Установка и настройка Laravel Websockets ................................................................ 685 31.2. Бэкенд: вещаемые события и оповещения ....................................................................... 687 31.2.1. Вещаемые события ....................................................................................................... 687 31.2.1.1. Вещаемые события моделей ........................................................................................ 690 31.2.2. Вещаемые оповещения ................................................................................................ 693 31.3. Бэкенд: каналы вещания .................................................................................................... 695 31.3.1. Общедоступные каналы вещания ................................................................................ 695 31.3.2. Закрытые каналы вещания ........................................................................................... 695 31.3.3. Каналы присутствия ..................................................................................................... 697 31.4. Фронтенд: прослушивание каналов вещания ................................................................... 699 31.4.1. Использование Laravel Echo ........................................................................................ 699 31.4.2. Прослушивание общедоступных каналов .................................................................. 701 31.4.3. Прослушивание закрытых каналов ............................................................................. 703 31.4.4. Прослушивание каналов присутствия......................................................................... 703 31.4.5. Отправка произвольных уведомлений ........................................................................ 704 31.5. Запуск вещания ................................................................................................................... 705 Глава 32. Команды утилиты artisan ......................................................................................... 706 32.1. Получение сведений о командах утилиты artisan ............................................................ 706 32.2. Команды-классы ................................................................................................................. 707 32.2.1. Создание команд-классов ............................................................................................ 707 32.2.2. Описание формата вызова команд .............................................................................. 709 32.2.3. Получение значений аргументов ................................................................................. 711 32.2.4. Получение данных от пользователя ............................................................................ 712 32.2.5. Вывод данных ............................................................................................................... 713 32.2.5.1. Вывод индикатора процесса ...................................................................................... 714 32.2.6. Вызов из команды других команд ............................................................................... 715 32.2.7. Регистрация команд-классов ....................................................................................... 716 32.3. Команды-функции .............................................................................................................. 716 32.4. Программный вызов команд.............................................................................................. 718 32.5. События утилиты artisan .................................................................................................... 718 Глава 33. Обработка ошибок .................................................................................................... 719 33.1. Настройка веб-страниц с сообщениями об ошибках ....................................................... 719 33.2. Создание и использование своих исключений ................................................................. 720 33.2.1. Создание своих исключений ........................................................................................ 720 33.2.2. Возбуждение своих исключений ................................................................................. 722 33.3. Настройка обработки существующих исключений ......................................................... 723 33.4. Подавление исключений .................................................................................................... 725 Глава 34. Журналирование и дополнительные средства отладки ................................................. 728 34.1. Подсистема журналирования............................................................................................. 728 34.1.1. Настройка подсистемы журналирования ........................................................................ 728 34.1.2. Занесение записей в журнал ........................................................................................ 731 34.1.2.1. Разделяемая дополнительная информация .................................................................. 732 34.1.3. Событие, генерируемое при занесении записи в журнал ................................................. 733 34.2. Дополнительные средства отладки ................................................................................... 733 Глава 35. Публикация веб-сайта .............................................................................................. 735 35.1. Подготовка веб-сайта к публикации ................................................................................. 735 35.1.1. Удаление ненужного кода и данных ........................................................................... 735 35.1.2. Настройка под платформу публикации ...................................................................... 736 35.1.3. Переключение в режим эксплуатации ........................................................................ 736 35.1.4. Задание списка доверенных прокси-серверов ............................................................ 736 35.1.5. Задание списка доверенных хостов............................................................................. 737 35.1.6. Компиляция шаблонов ................................................................................................. 738 35.1.7. Кеширование маршрутов ............................................................................................. 738 35.1.8. Кеширование настроек ................................................................................................. 739 35.1.9. Кеширование обработчиков событий ............................................................................ 739 35.1.10. Приведение таблиц стилей и веб-сценариев к виду, оптимальному для публикации ................................................................................................ 740 35.2. Перенос веб-сайта на платформу для публикации........................................................... 740 35.3. Настройка веб-сервера и запуск сторонних программ .................................................... 741 35.4. Режим обслуживания.................................................................................................... 741 Заключение ........................................................................................................................ 744 Приложение. Описание электронного архива ........................................................................ 746 Предметный указатель ........................................................................................................ 747
Профессиональное программирование - Дронов В. А. - Laravel 9. Быстрая разработка веб-сайтов на PHP + код [2023, PDF, RUS] download torrent for free and without registration
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum