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

Оглавление⌄
Предисловие....16 Немного истории....16 Основные нововведения в РНР версии 8....18 Улучшена производительность благодаря компиляции Just-In-Time....18 Именованные аргументы....18 Атрибуты вместо аннотаций PHPDoc....18 Объявление свойств в конструкторе....19 Выражение Match и оператор nullsafe....19 Новые классы, интерфейсы и функции....20 Улучшения в системе типов и обработке ошибок....20 Прочие улучшения синтаксиса....21 ЧАСТЬ I. ТЕОРИЯ....22 РАЗДЕЛ 1. БЫСТРЫЙ СТАРТ....24 Глава 1. Установка необходимого программного обеспечения....26 1.1. Нужно ли устанавливать программное обеспечение?....26 1.2. Выбор PHP-редактора и FTP-клиента....28 1.3. Установка связки Apache + РНР + MySQL в Windows....31 1.3.1. Для опытных пользователей: установка вручную....31 Установка веб-сервера Apache....31 Установка РНР....33 1.3.2. Установка для новичков (рекомендуется)....40 Глава 2. Программа на РНР....44 2.1. Ваша первая программа....44 2.2. Запуск РНР-программы....45 2.3. Вывод текста без echo....46 Глава 3. Основы синтаксиса РНР....49 3.1. Переменные....49 3.1.1. Правила объявления переменных. Имена переменных....49 3.1.2. Типы данных переменных....50 3.1.3. Булевы переменные....52 3.1.4. Операции над переменными....52 3.1.5. Ссылки....53 3.2. Константы....54 3.3. Выражения и операции....58 3.3.1. Что такое выражение^....58 3.3.2. Арифметические операции....58 3.3.3. Логические выражения....59 3.3.4. Битовые операции....59 3.3.5. Приоритеты операций....60 3.3.6. Операторы эквивалентности == и ===....61 3.3.7. Оператор ?? — сокращенная форма тернарной условной операции....62 3.3.8. Операции со строками....62 3.3.9. Оператор nullsafe....63 3.4. Условный оператор....64 3.5. Циклы....65 3.5.1. Цикл со счетчиком for....65 3.5.2. Цикл while....66 3.5.3. Цикл do-while....66 3.5.4. Принудительное завершение цикла и пропуск итерации....66 3.6. Оператор выбора switch-case....67 3.7. Выражение match в РНР 8....68 Глава 4. Файл конфигурации php.ini....69 4.1. Каталог /etc/php....69 4.2. Параметры памяти....70 4.3. Zend OPcache....70 4.4. Максимальное время выполнения....72 4.5. Загрузка файлов....73 4.6. Обработка сессий....73 4.7. Буферизация вывода....74 4.8. Директива error reportingO....74 4.9. Отключение потенциально опасных функций....74 4.10. Директива allow_url_open....75 РАЗДЕЛ 2. ПЕРЕДАЧА ПАРАМЕТРОВ РНР-ПРОГРАММАМ....76 Глава 5. Методы GET и POST....78 5.1. Интерфейс CGI....78 5.2. Метод GET....80 5.3. Метод POST....80 Глава 6. Протокол HTTP и интерфейс CGI....82 6.1. Специальные переменные окружения CGI....82 6.2. Заголовки протокола HTTP....83 6.3. Коды ответов протокола HTTP....84 Глава 7. Передача параметров посредством HTML-формы....86 7.1. Создание простейшей формы и ее обработка в сценарии....86 7.2. Создание пользовательского интерфейса с помощью формы....89 7.2.1. Ввод текста. Теги INPUT и TEXTAREA....89 7.2.2. Зависимые и независимые переключатели....91 7.2.3. Списки выбора....92 7.2.4. Форма для передачи файлов....94 7.2.5. Кнопки....94 7.3. Проверка параметров формы....95 7.3.1. Проверка корректности e-mail....96 7.3.2. Проверка правильности номера банковской карты....97 7.3.3. Удаление лишних пробелов....98 7.4. Директива @csrf шаблонизатора Blade....98 Глава 8. Не забываем о поисковой оптимизации....100 8.1. «Дружественные» интернет-адреса....100 8.1.1. Организация SEF URL с помощью файла .htaccess....101 8.1.2. Использование фреймворков....103 8.2. Идентификаторы сеансов....103 8.3. Производительность сценария....103 8.3.1. Использование шаблонизатора. Сокращение количества инструкций echo....104 8.3.2. Включение OPcache....104 8.3.3. Включение HTTP 2.0....105 8.3.4. Обновление версии РНР....105 РАЗДЕЛ 3. МАССИВЫ И СПИСКИ....106 Глава 9. Основные операции над массивами и списками....108 9.1. Массив и список. Цикл foreach....108 9.2. Функции list() и array!)....111 9.3. Удаление массива....113 9.4. Слияние массивов....113 9.5. Функция print_r()....115 9.6. Разыменовывание массива....116 Глава 10. Функции сортировки массивов....118 10.1. Сортировка массивов....118 10.2. Функция sort() — сортировка списка....118 10.3. Функция asortf) — сортировка массива по значениям....119 10.4. Функция ksort() — сортировка по ключам....120 10.5. Функции array_reverse() и shuffle()....121 10.6. Собственная функция сортировки....121 10.7. Натуральная сортировка....122 Глава 11. Особые операции над массивами....124 11.1. Добавление и удаление элементов массива....124 11.2. Упаковка переменных в массив и их извлечение....125 11.3. Получение части массива....127 11.4. Функции автоматического заполнения массива....127 11.5. Сравнение массивов....128 11.6. Полезные операции над массивом....129 11.6.1. Вычисление суммы и произведения всех элементов массива....129 11.6.2. Проверка существования элемента в массиве....129 11.6.3. Получение случайного элемента из массива....130 11.6.4. Удаление дубликатов из массива....130 11.6.5. Получение значений и ключей массива....131 11.6.6. Замена местами значений и ключей....131 11.6.7. Подсчет значений в массиве....131 11.6.8. Замена в массиве....132 11.6.9. Поиск в массиве....132 11.6.10. Прогулка по массиву....133 РАЗДЕЛ 4. ФУНКЦИИ В РНР....136 Глава 12. Полезные стандартные функции. Работа с датой....138 12.1. Генератор случайных чисел....138 12.2. Дата и время....139 12.2.1. Кратко о timestamp....139 12.2.2. Функции strtotime() и checkdate()....139 12.2.3. Вывод даты....140 12.2.4. Использование type="date....142 12.2.5. Функция checkdate(): проверка даты на корректность....142 12.2.6. Класс DateTime: удобная работа с датой и временем....144 Создание даты по строке....144 Вычисление количества дней между двумя датами....145 Работа с временными интервалами....146 12.2.7. Настройка РНР для корректной работы с датами....147 12.3. Математические функции....147 Глава 13. Функции для работы со строками....149 13.1. Основные строковые функции....149 13.2. Специальные функции замены....153 13.3. Функции преобразования строки....155 13.4. Функции преобразования кодировок....157 13.5. Функции для работы с отдельными символами строки. Разыменовывание строки....158 13.6. Функция md5() и другие функции шифрования/хеширования. API хеширования паролей....159 13.7. Функции explode() и implode()\ работа с подстроками....160 13.8. Статистические функции....161 13.9. Функции вывода текста....162 13.10. Установка локали....164 13.11. Форматирование чисел и денежных величин....165 13.12. Преобразование систем счисления....165 13.13. Строки в РНР 7/8....166 Глава 14. Работаем с файлами и каталогами....167 14.1. Права доступа в UNIX....167 14.2. Чтение файла....169 14.2.1. Функции fopenQ и fread()....170 14.2.2. Функция file(): построчное чтение файла....172 14.2.3. Чтение всего файла: функция file_get_contents()....173 14.3. Запись файла....173 14.4. Создание временных файлов....174 14.5. Работа с CSV-файлами....174 14.6. Специальные функции для работы с файлами....176 14.6.1. Функции для работы с именами файлов....176 14.6.2. Работа с правами доступа....177 14.6.3. Копирование, переименование и удаление файлов....178 14.6.4. Время доступа к файлу....179 14.6.5. Другие полезные функции....179 14.7. Совместный доступ к файлу....180 14.8. Функции для работы с каталогами....181 Глава 15. Вывод графических изображений средствами РНР....183 15.1. Библиотека GD....183 15.1.1. Получение информации об изображении....183 15.1.2. Конвертирование графических форматов....186 15.1.3. Вывод текста поверх картинки. Задание цвета....188 15.1.4. Прозрачность....191 15.1.5. Рисование графических примитивов....192 15.1.6. Поворот изображения....194 15.2. Изменение размера изображения....194 15.3. Создание водяных знаков....196 15.4. Поддержка графического формата WebP....198 Глава 16. Работа с сетевыми сокетами в РНР. Сетевые функции....200 16.1. Еще раз о том, что такое сокет....200 16.2. Функция fsockopen()....200 16.3. Примеры работы с сокетами....201 16.3.1. Работаем с протоколом HTTP....201 16.3.2. Отправка почты с использованием сокетов....203 16.3.3. Простейший клиент/сервер....205 16.4. Блокирующий и неблокирующий режимы сокета....207 16.5. DNS-функции....207 Глава 17. Собственные функции....209 17.1. Зачем нужны собственные функции?....209 17.2. Особенности функций в РНР....209 17.3. Объявление функции....210 17.4. Области видимости функции....212 17.5. Вложенность функций....212 17.6. Переменное число аргументов....214 17.7. Передача массивов в качестве параметров....215 17.8. Передача аргументов по ссылке....217 17.9. Генераторы....218 17.10. Полезные примеры....220 17.10.1. Получение реального IP-адреса клиента....220 17.10.2. Генерирование сложного пароля....221 17.10.3. Рекурсивное удаление каталога....221 17.10.4. Отправка файла в браузер....222 17.10.5. Сжатие файла «налету»....223 РАЗДЕЛ 5. БАЗА ДАННЫХ MYSQL....226 Глава 18. Установка MySQL на VDS....228 18.1. Несколько вводных слов....228 18.2. Установка сервиса MySQL....228 18.3. Настройка MySQL....229 18.4. Создание MySQL-пользователя....230 18.5. Запуск и останов сервера....231 Глава 19. Основы SQL....232 19.1. Немного истории....232 19.2. Преимущества SQL....232 19.3. Как выглядят запросы?....233 19.4. Что такое база данных?....234 19.5. Создание таблиц....235 19.6. Добавление записей в таблицу....239 19.7. Обновление записей....239 19.8. Выборка записей....240 19.9. Удаление записей....241 19.10. Встроенные функции....242 19.11. Группировка записей. Сложные запросы....243 19.12. Копирование записей из одной таблицы в другую....246 19.13. Кеширование запросов....246 Глава 20. Функции для работы с MySQL....249 20.1. Способы работы с базой данных....249 20.2. Расширение mysqli....250 20.2.1. Подключение к серверу MySQL....250 20.2.2. Передача запросов серверу....251 20.2.3. Метод real_escape_string()....253 20.3. Расширение PDO....253 20.3.1. Соединение с базой данных....253 20.3.2. Выполнение запросов и чтение результата....255 20.3.3. Получение данных....257 20.3.4. Особенности использования операторов LIKE, LIMIT и IN....258 20.3.5. Имена таблиц и полей при работе с PDO....259 20.3.6. Запросы вставки и обновление....259 Глава 21. Работа с базой данных в Laravel....261 21.1. Способы работы с базой данных....261 21.2. Сырые (прямые) запросы....262 21.3. Конструктор запросов....263 21.4. Система Eloquent....266 РАЗДЕЛ 6. ИНСТРУМЕНТЫ ДЛЯ СОЗДАНИЯ СЛОЖНЫХ ПРОЕКТОВ....270 Глава 22. Разработка собственного шаблонизатора....272 22.1. Организация файлов и каталогов проекта....272 22.2. Выносим параметры в отдельный файл....274 22.3. Подключение дополнительных файлов....275 22.3.1. Инструкции include и require....275 22.3.2. Альтернативный способ подключения сценариев....276 22.3.3. Инструкции include once и require once....278 22.4. Шаблоны....278 Глава 23. Шаблонизатор Blade....283 23.1. Введение в Blade....283 23.2. Вывод значений скалярных переменных....284 23.3. Директивы Blade....284 23.3.1. Директива @if....284 23.3.2. Директивы @for, (ajforeach и @while....285 23.3.3. Директивы @forelse и @endforelse....285 23.4. Включение представлений. Директива (^include....286 23.5. Директива @csrf....288 Глава 24. Объектно-ориентированное программирование....289 24.1. Основы ООП....289 24.2. Классы и объекты....290 24.3. Конструкторы и деструкторы класса....292 24.4. Наследование классов. Полиморфизм....294 24.5. Область видимости членов класса....295 24.6. Абстрактные классы и методы....296 24.7. Служебное слово final....296 24.8. Клонирование объектов....297 24.9. Константы — члены класса....298 24.10. Статические члены класса....298 24.11. Оператор instanceof....299 24.12. Итераторы....299 24.13. Пространства имен....300 24.13.1. Общая концепция....300 24.13.2. Объявление пространства имен....301 24.13.3. Псевдонимы....302 24.14. Типажи....303 24.15. Вызов метода или свойства класса выражением....304 24.16. Генераторы....304 24.17. Атрибуты....306 Глава 25. Хранение данных в Cookies и сессиях....307 25.1. Зачем нужны Cookies и сессии?....307 25.2. Cookies или хранение данных на стороне клиента....307 25.2.1. Что такое Cookies?....307 25.2.2. Установка Cookies....308 25.2.3. Удаление Cookies....309 25.2.4. Организация корзины с помощью Cookies....310 25.3. Механизм сессий....312 25.3.1. Для чего нужны сессии?....312 25.3.2. Автоматическое создание сессии....313 25.3.3. Хранение данных в сессии....313 Глава 26. Обработка исключений....314 26.1. Введение в обработку исключений....314 26.2. Блок catch....315 26.3. Ьлок finally....316 26.4. Глобальный обработчик исключений....318 Глава 27. Контроль версий....319 27.1. Выбор системы контроля версий....319 27.2. Первоначальная настройка....320 27.3. Создание нового репозитория или получение его по существующему URL-адресу....320 27.4. Операции с файлами. Перемещение и удаление версий файлов репозитория....321 27.5. Сохранение и восстановление незавершенных изменений....322 27.6. Просмотр изменений и создание коммитов (фиксация изменений)....322 27.7. Коллективная работа....323 27.8. Просмотр и изучение истории изменений файлов проекта....323 27.9. Откат изменений. Удаление ошибок и корректировка созданной истории....324 27.10. Синхронизация с удаленным репозиторием. Регистрация удаленного репозитория и обмен изменениями....324 Глава 28. Тестирование РНР-сценариев....325 28.1. Программа работает, но не так, как нам нужно....325 28.2. «Самодельные» точки останова....326 28.3. Система автоматического тестирования....328 28.4. Директива error reporting....331 ЧАСТЬ II. ПРАКТИКА....332 РАЗДЕЛ 7. РАЗРАБОТКА ОСНОВНЫХ ЭЛЕМЕНТОВ САЙТА....334 Глава 29. Загрузка файлов на сервер....336 29.1. Что нужно знать о загрузке файлов на сервер?....336 29.2. Реализация загрузки файла....339 29.3. Загрузка нескольких файлов....341 29.4. Индикатор загрузки файла....343 29.4.1. Некоторые теоретические предпосылки....343 29.4.2. Пример практической реализации....346 29.5. Проблемы при загрузке файлов....353 Глава 30. Использование FTP-функций....354 30.1. Функции для работы с FTP....354 30.2. Примеры использования FTP-функций....357 Глава 31. Отправка и прием почты....360 31.1. Отправка почты средствами РНР: функция mail()....360 31.1.1. Использование функции....360 31.1.2. Подробно о настройке сервера....361 31.2. Класс PHPMailer. Разработка сценария автоматической рассылки прайс-листа....362 31.3. Получение писем по протоколу POP3....366 31.4. Получение писем по протоколу IMAP....368 Глава 32. Введение в PEAR....371 32.1. Серьезные проекты и PEAR....371 32.2. Пример использования класса DB....373 Глава 33. Импорт и экспорт данных....376 33.1. Импорт прайс-листов из формата CSV в базу данных MySQL....376 33.2. Преобразование файлов Excel в CSV с помощью РНР. Импорт прайсов из Excel....380 33.3. Работа с XML-файлами....381 33.3.1. Парсинг XML-файла....381 33.3.2. Генерирование XML-файла....383 Глава 34. Работаем с MP3....385 34.1. Формат MP3..................................................j....385 34.2. Библиотека PEAR....386 34.3. Вывод ШЗ-тегов....387 34.4. Редактирование ЮЗ-тегов....389 34.5. Удаление тега....389 Глава 35. Расширение cURL: практические примеры....391 35.1. Этот загадочный cURL....391 35.2. Авторизация на сайте и загрузка файла после нее....393 35.3. Замена функцииfile_get_contents() с помощью cURL....396 35.4. Загрузка файла через FTP....396 35.5. Проверка доступности сайта....397 РАЗДЕЛ 8. ВВЕДЕНИЕ В LARAVEL....400 Глава 36. Фреймворк или чистый РНР-код?....402 36.1. Что такое фреймворк?....402 36.2. Обзор популярных РНР-фреймворков....403 36.2.1. Zend Framework и The Laminas Project....403 36.2.2. Laravel....404 36.2.3. Symfony....404 36.2.4. Yii....404 36.2.5. Codeigniter....405 Глава 37. Установка Laravel на VDS c Ubuntu Linux....406 37.1. Выбор места для установки....406 37.2. Установка необходимого ПО....406 37.2.1. Установка веб-сервера Apache....406 37.2.2. Установка РНР и его расширений....408 37.2.3. Установка Laravel....410 Глава 38. Определяем маршруты....413 38.1. Запросы протокола HTTP....413 38.2. Модель. Представление. Контроллер....414 38.3. Простейшие маршруты. Сопоставление маршрута с контроллером....415 38.4. Параметры в маршрутах....416 38.5. Имена маршрутов....417 38.6. Префиксы маршрутов....418 38.7. Маршруты новостной страницы....418 Глава 39. Пишем контроллер....419 39.1. Создание контроллера....419 39.2. Простой метод: List()....420 39.3. Методы с параметрами: View() и GetArchiveContent()....421 39.4. Обработка POST-запроса....422 Глава 40. Создаем представление....423 40.1. Каталог resources/views....423 40.2. Получение данных из контроллера....424 40.3. Очистка кеша страниц и кеша представлений....425 Глава 41. Запрос и ответ....426 41.1. Работаем с запросами. Класс Request....426 41.1.1. Основные методы....426 41.1.2. Получение информации о пользователе/запросе....427 41.1.3. Работа с файлами....428 41.1.4. Собирая все вместе....428 41.2. Класс Response....429 Глава 42. Работа с данными....431 42.1. Файловая система....431 42.1.1. Конфигурация фасада Storage....431 42.1.2. Методы фасада Storage....432 42.1.3. Загрузка файлов на сервер....433 42.1.4. Метод downloadO....434 42.2. Сессии....434 42.3. Работа с Cookies....436 РАЗДЕЛ 9. БЕЗОПАСНОСТЬ САЙТА....438 Глава 43. Как взламываются сайты и как этому помешать? Основные сведения....440 43.1. Основные способы взлома сайта....440 43.2. Два самых распространенных метода взлома....442 43.2.1. Межсайтовый скриптинг....442 43.2.2. SQL-инъекции....444 43.3. Остальные методы....447 Глава 44. SSL-сертификат для сайта....448 44.1. Выбор сертификата....448 44.1.1. Основные типы сертификатов....448 44.1.2. Какой тип сертификата выбрать?....449 44.1.3. Особенности SSL-сертификатов разных типов....449 44.2. Где купить SSL-сертификат?....452 44.3. Установка сертификата на веб-сервер....453 44.3.1. Веб-сервер Apache2....453 44.3.2. Веб-сервер Ngnix....454 Глава 45. Защита РНР с помощью конфигурационного файла....455 45.1. Конфигурационный файл php.ini....455 45.2. Отключение потенциально опасных функций....456 45.3. Рекомендованные значения некоторых конфигурационных директив....456 РАЗДЕЛ 10. ПОЛЕЗНЫЕ СВЕДЕНИЯ....458 Глава 46. Устанавливаем визуальный редактор Summernote....460 46.1. Знакомство с редактором....460 46.2. Интеграция Summemote и Laravel....460 Глава 47. Работа с MongoDB средствами РНР....463 47.1. Что такое MongoDB?....463 47.2. Настройка интерпретатора РНР....464 47.3. Добавление данных в MongoDB....466 47.4. Чтение информации из базы данных....468 47.5. Преобразование объекта в массив....470 ПРИЛОЖЕНИЯ....474 Приложение 1. Шаблоны проектирования....476 П1.1. Введение в шаблоны проектирования....476 П1.2. Шаблон «Стратегия»....477 П1.3. Шаблон «Адаптер»....478 П1.4. Шаблон «Фабрика»....479 П1.5. Шаблон «Одиночка»....480 Приложение 2. Профайлинг....482 П2.1. Что такое профайлинг?....482 П2.2. Типы профайлеров....482 П2.3. Профайлер Xdebug....483 П2.4. XHProf....483 Приложение 3. Виртуальная машина HHVM....486 П3.1. Что такое HHVM?....486 П3.2. Подойдет ли HHVM именно для вас?....487 П3.3. Установка HHVM....488 П3.4. Настройка HHVM....488 П3.5. Язык Hack....490 Приложение 4. Описание электронного архива....491 Предметный указатель....493
Описание
Ниже — практический обзор по теме «приложений».
Даны начала разработки на PHP: установка и параметр Apache 2.4, PHP, MySQL и кроссплатформенной сборки XAMPP, выбор редактора PHP-кода, синтаксис языка, самые полезные функции и нововведения PHP 8.x. На практических примерах описано создание веб-приложений на языке PHP версии 8.x. Рассмотрено создание веб-приложений с использованием популярного фреймворка Laravel и шаблонизатора Blade. Раскрыты особенности создания индикатора загрузки файла и разыменовывания массивов, приведены примеры устранения типичных SEO-ошибок, допускаемых программистами, описана работа с PDO, JSON, MP3, Curl, MobileDetec Особое внимание уделяется безопасности веб-приложений – рассматривается, как уберечь их от основных атак, как установить SSL-сертификат и как уберечь сам сервер от неприятностей. В качестве хранилища данных использованы два сервера – самая современная версия MySQL и набирающая популярность СУБД MongoDB.
На сайте издательства находятся дополнительные главы, листинги из книги, а также необходимое программное обеспечение.
Для веб-программистов
Синтаксис PHP. Нововведения PHP 8.xОбъектно-ориентированное программирование на PHP 8.xКроссплатформенная сборка XAMPPMySQL и MongoDBРабота с PDO, JSON, MP3, Curl, MobileDetectВведение во фреймворк Laravel, шаблонизатор BladeБезопасность веб-приложений
На этом основные моменты по теме закрыты.
Поделиться
Частые вопросы
Можно ли скачать «Разработка веб-приложений на PHP 8» бесплатно?
Да, «Разработка веб-приложений на PHP 8» доступна для бесплатного скачивания на нашем сайте в формате PDF. Ссылка на файл находится на этой странице.
В каком формате и какого размера файл?
Книга предоставляется в формате PDF, размер файла 24,0 МБ.
Кто автор и когда вышла книга?
автор — Колесниченко Дмитрий, издательство БХВ-Петербург, год выпуска 2024, 498 страниц.
О чём книга «Разработка веб-приложений на PHP 8»?
На практических примерах описано создание веб-приложений на языке PHP версии 8.x.