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

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

Разработка веб-приложений на PHP 8
Автор: Колесниченко Дмитрий
Дата выхода: 2024
Издательство: БХВ-Петербург
Количество страниц: 498
Размер файла: 24.0 MB
Тип файла: PDF
Добавил: codelibs
 Проверить на вирусы  Дополнительные материалы 

Предисловие....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 версии 8.x. Даны начала разработки на PHP: установка и настройка Apache 2.4, PHP, MySQL и кроссплатформенной сборки XAMPP, выбор редактора PHP-кода, синтаксис языка, самые полезные функции и нововведения PHP 8.x. Рассмотрено создание веб-приложений с использованием популярного фреймворка Laravel и шаблонизатора Blade. В качестве хранилища данных использованы два сервера – самая современная версия MySQL и набирающая популярность СУБД MongoDB. Раскрыты особенности создания индикатора загрузки файла и разыменовывания массивов, приведены примеры устранения типичных SEO-ошибок, допускаемых программистами, описана работа с PDO, JSON, MP3, Curl, MobileDetec Особое внимание уделяется безопасности веб-приложений – рассматривается, как уберечь их от основных атак, как установить SSL-сертификат и как уберечь сам сервер от неприятностей.

На сайте издательства находятся дополнительные главы, листинги из книги, а также необходимое программное обеспечение.

Для веб-программистов

  • Синтаксис PHP. Нововведения PHP 8.x
  • Объектно-ориентированное программирование на PHP 8.x
  • Кроссплатформенная сборка XAMPP
  • MySQL и MongoDB
  • Работа с PDO, JSON, MP3, Curl, MobileDetect
  • Введение во фреймворк Laravel, шаблонизатор Blade
  • Безопасность веб-приложений

Похожее:

Список отзывов:

Нет отзывов к книге.