Книга Самоучитель PHP 7 опытных разработчиков описывает последнюю версию языка разработки серверных сценариев РНР7. Рассмотрены все нововведения языка и связанные с ними изменения в разработке современных WеЬ-сайтов. Изложение ведется с упором на объектно-ориентированное программирование, шаблоны проектирования, итераторы, генераторы, а также взаимодействие с современными базами данных (PostgreSQL и Redis). В конце глав приведены более 100 заданий для закрепления материала и освоение не вошедших в книгу разделов языка. Электронный архив с исходными кодами доступен на сайтах издательства и GitHub.
Оглавление книги Самоучитель PHP 7, Максим Кузнецов, Игорь Симдянов
Предисловие ……………………………………………………………………………………………………. 11
Объектно-ориентированный подход ……………………………………………………………………………….. 11
PostgreSQL и Redis ………………………………………………………………………………………………………… 11
Задания …………………………………………………………………………………………………………………………. 12
Исходные коды ……………………………………………………………………………………………………………… 12
Благодарности ……………………………………………………………………………………………………………….. 13
Глава
1. Что представляет собой РНР?
1.1. Достоинства и недостатки ………………………………………………………………………………………… 15
1.2. Структура РНР ………………………………………………………………………………………………………… 17
1.3. Сопутствующие технологии …………………………………………………………………………………….. 17
Задание …………………………………………………………………………………………………………………………. 18
Глава
2. Установка РНР …………………………………………………………………………………. 19
2.1. Установка в Windows ………………………………………………………………………………………………. 19
2.2. Установка в Мае OS Х …………………………………………………………………………………………….. 21
2.3. Установка в Linux (Ubuntu) ………………………………………………………………………………………. 22
2.4. Встроенный сервер ………………………………………………………………………………………………….. 22
2.5. Файл hosts ……………………………………………………………………………………………………………….. 23
2.6. Вещание вовне ………………………………………………………………………………………………………… 24
2. 7. Настройка РНР ………………………………………………………………………………………………………… 24
2.8. Расширения …………………………………………………………………………………………………………….. 26
2.9. Документация ………………………………………………………………………………………………………….. 27
Задания …………………………………………………………………………………………………………………………. 27
Глава
3. Быстрый старт ………………………………………………………………………………….. 29
3.1. Скрипты ………………………………………………………………………………………………………………….. 29
3.2. Начальные и конечные теги ……………………………………………………………………………………… 31
3.3. Использование точки с запятой ………………………………………………………………………………… 32
3.4. Составные выражения. Фигурные скобки …………………………………………………………………. 33
3.5. Комментарии …………………………………………………………………………………………………………… 34
3.6. Вюпочение РНР-файла …………………………………………………………………………………………….. 36
Задания …………………………………………………………………………………………………………………………. 37
4 Оглавление
Глава 4.
Переменные и типы данных …………………………………………………………….. 39
4.1. Объявление переменной. Оператор = ……………………………………………………………………….. 39
4.2. Типы данных …………………………………………………………………………………………………………… 40
4.3. Целые числа …………………………………………………………………………………………………………… .41
4.4. Вещественные числа ………………………………………………………………………………………………. .42
4.5. Логический тип ………………………………………………………………………………………………………. .43
4.6. Строки …………………………………………………………………………………………………………………. … 44
4.7. Кавычки … “” … “”.”””.””””.”.”” …….. ” … “.”””.” …….. ” …… ” … ” ……………………….. “”.”” ……. 44
4.8. Оператор <<< …………………………………………………………………………………………………………. 47
4.9. Обращение к неинициализированной переменной. Замечания (Notice).””.” …… “”.”” … “48
4.10. Специальный тип пи// .. “.”” …. ” .. ” …………. “.”” … “” … ” ………….. “””.”.” .. “””.””” …… ” ….. “48
4.11. Уничтожение переменной. Конструкция unset0 ………………… “””””””” …….. ” … “”” … “”49
4.12. Проверка существования переменной. Конструкции isset() и empty() ” … “”.” ………… ” … 50
4.13. Определение типа переменной …. ” … ” …………. ” …….. ” …………. “.””.””.”.” … ” ……………….. 52
4.14. Неявное приведение типов ……………….. “””.” … ” ………………… “” … ” …. “.”” ….. “.”” … “”” .. 54
4.15. Явное приведение типов .”.”” ……………… “”.” ….. ” … ” ……………. “” … ” .. “” … “”.” ………. “””55
4.16. Динамические переменные”” ……………… “.” …………………… ” …… “”.””” … “”” ………. ” .. “.”58
Задания …………………………………………………………………………………………………………………………. 59
Глава
5.
Классы и объекты
…… ” … “.” ………………………….. ” ………………………………… 61
5.1. Собственные типы данных .”.”.” …………… “.””” … ” ……. ” … ” ……….. “”” … “””” ……… ” …… “.61
5.2. Создание класса” ……………….. “”.”””.”” …………. ” … ” ……… “” …. “”.”” ….. “.”””.” …………….. 62
5.3. Разделение классов и остального кода .. ” ………. “.””.”.”” ….. ” …. “.””””.””.”.” ………………. 63
5.4. Создание объекта …. ” ………….. ” ……………………………………. “”.”” .. “””” .. “”.””.” ……………… 65
5.5. Область видимости переменных класса ………… “.”.””.””” … “.” …. ” .. “”” … “”.” ……….. ” … “66
5.6. Спецификаторы доступа .” ….. ” … “”.”.” ….. ” ……. “.””.” ….. “.””.”.”” … “” ……. ” ……. ” ……… “.67
5.7. Статические переменные класса …………… ” .. “.”””.” … ” ….. ” …… “”.””.”.”.””” ……………. ” .. 68
5.8. Ссьшки на переменные.””.” ……. “”.”.” …………… “”.”””.””.””.” ….. “.”” ……. ” .. ” ……………… 69
5.9. Клонирование объектов ………… ” … “.” ……. ” …… “”.”””.””.””” …. “”.”” ……. ” …. “.” ……… “”. 70
Задания …………. ” ….. “””.” ….. ” ……… “.”.”.” ……… ” ……. ” .. “” ….. “.”.”””.””.” …. “”.”” ………………. 71
Глава
13. Взаимодействие РНР с HTML ………………………………………………………. 181
13 .1. Передача параметров методом GET ……………………………………………………………………… 181
13.2. НТМL-форма и ее обработчик ……………………………………………………………………………… 184
13.3. Текстовое поле …………………………………………………………………………………………………….. 188
13 .4. Поле для приема пароля ……………………………………………………………………………………….. 189
13.5. Текстовая область ………………………………………………………………………………………………… 190
13.6. Скрытое поле ………………………………………………………………………………………………………. 191
13.7. Флажок ……………………………………………………………………………………………………………….. 193
13.8. Список ………………………………………………………………………………………………………………… 195
13.9. Переключатель …………………………………………………………………………………………………….. 197
13.10. Загрузка файла на сервер ……………………………………………………………………………………. 198
13.11. Переадресация …………………………………………………………………………………………………… 201
Задания ……………………………………………………………………………………………………………………….. 204
Глава
14. Суперrлобальные массивы …………………………………………………………… 205
14.1. Типы суперrлобальных массивов ………………………………………………………………………….. 205
14.2. Cookie ………………………………………………………………………………………… : ……………………… 206
14.3. Сессии …………………………………………………………………………………………………………………. 208
14.4. Переменные окружения ……………………………………………………………………………………….. 210
14.5. Массив $_SERVER ……………….. ” ……………………………………………………………………………. 212
14.5.1. Элемент $_SERVER[‘DOCUMENT_ROOT’} ………………………………………………… 212
14.5.2. Элемент $_SERVER[‘H1ТP _ACCEPT’} ……………………………………………………….. 212
14.5.3. Элемент $_SERVER[‘H1ТP_ACCEPT_LANGUAGE’} ………………………………….. 213
14.5.4. Элемент $_8ERVER[‘HТТP _HOST’} … ~ ………………………………………………………… 214
14.5.5. Элемент $_SERVER[‘HТТP _REFERER’} ……………………………………………………… 214
14.5.6. Элемент $_SERVER[‘H1ТP _USER_AGENT’} ……………………………………………….. 214
14.5.7. Элемент $_SERVER[‘REMOTE_ADDR’} ……………………………………………………… 214
14.5.8. Элемент $_8ERVER[‘SCRIPT_FILENAME’} ……………………………………………. ” … 215
14.5.9. Элемент $_SERVER[‘SERVER_NAME’} …………… ” ………………………………………… 215
14.5.10. Элемент $_SERVER[‘REQUEST_METHOD’} ……………………………………………… 216
14.5.11. Элемент $_SERVER[‘QUERY_STRING’} ……………………………………………………. 216
14.5.12. Элемент $_SERVER[‘PHP _SELF’} …………………………………………………………….. 211
14.5.13. Элемент $_SERVER[‘REQUEST_URl’} ………………………………………………………. 211
Задания ……………………………………………………………………………………………………………………….. 217