/php8

Примеры к книге "PHP 8. Котеров Д., Симдянов И."

Primary LanguagePHP

PHP 8

Дмитрий Котеров, Игорь Симдянов. PHP 8. В подлиннике

Помощь и отзывы

Раздел Issues

Содержание

Предисловие

  • Для кого написана эта книга?
  • Исходные коды
  • Четвертое издание
  • Общая структура книги
  • Листинги
  • Предметный указатель
  • Благодарности от Дмитрия Котерова
  • Благодарности от Игоря Симдянова

Часть I. Основы веб-разработки

Глава 1. Принципы работы Интернета

  • Протоколы передачи данных
  • Семейство TCP/IP
  • Протокол IP
  • Версии протокола IP
  • Доменное имя
  • Порт
  • Резюме

Глава 2. Протокол HTTP

  • Зачем нужен протокол HTTP?
  • Ресурсы
  • Параметры URL
  • Методы
  • HTTP-сообщения
  • HTTP-заголовки
    • Content-Type
    • Host
    • User-Agent
    • Referer
    • Content-length
    • Cookie
    • Accept
  • HTTP-коды ответов
  • Утилита curl
  • Резюме
  • Установка PHP в Windows
  • Переменная окружения PATH
  • Установка PHP в macos
  • Установка PHP в Linux (Ubuntu)
  • Проверочный скрипт
  • Ошибки в скриптах
  • Запуск встроенного сервера
  • Файл hosts
  • Вещание вовне
  • Конфигурирование PHP
  • Интерактивный PHP
  • Документация
  • Проверка стиля кода
  • Docker
  • Резюме

Часть II. Основы языка PHP

  • Что умеет PHP?
  • Веб-программирование до PHP
  • История PHP
  • Что нового в PHP 8?
    • Нововведения PHP 7.1
    • Нововведения PHP 7.2
    • Нововведения PHP 7.3
    • Нововведения PHP 7.4
    • Нововведения PHP 8.0
    • Нововведения PHP 8.1
  • Пример PHP-программы
  • Начальные и конечные теги
  • Использование точки с запятой
  • Фигурные скобки
  • Комментарии
  • Включение PHP-файла
  • Элементы языка
  • Резюме
  • Переменные
  • Типы переменных
  • Целые числа: integer
  • Вещественные числа: double
  • Логический тип: boolean
  • Строки: string
    • Кавычки
    • Оператор <<<
    • Устройство строки
  • Массивы: array
  • Объект: object
  • Ресурс: resource
  • Специальный тип null
  • Действия с переменными
    • Присвоение значения
    • Уничтожение
    • Проверка существования
  • Определение типа переменной
  • Некоторые условные обозначения
  • Неявное приведение типа
  • Явное приведение типа
  • Ссылочные переменные
    • Жесткие ссылки
    • «Сбор мусора»
    • Символические ссылки
    • Ссылки на объекты
  • Отладочные функции
  • Резюме
  • Объектно-ориентированное программирование
    • Коды
    • Ассемблер
    • Язык высокого уровня
    • Специализированный язык программирования
    • Объектно-ориентированные языки программирования
  • Зачем нужны классы?
  • Использование готовых классов
  • Создание классов
  • Разделение классов и остального кода
  • Создание объекта
  • Область видимости переменных класса
  • Типы переменных класса
  • Спецификаторы доступа
  • Свойства «только для чтения»
  • Дамп объекта
  • Статические переменные класса
  • Ссылки на переменные
  • Клонирование объектов
  • Резюме
  • Предопределенные константы
  • Создание константы
  • Проверка существования константы
  • Константы с динамическими именами
  • Абсолютный и относительный пути к файлу
  • Константы класса
  • Резюме
  • Оператор «точка с запятой»
  • Оператор «точка»
  • Оператор «запятая»
  • Арифметические операторы
  • Битовые операторы
  • Операторы сравнения
    • Особенности операторов == и !=
    • Сравнение вещественных чисел
    • Сравнение строк
    • Сравнение составных переменных
    • Оператор эквивалентности
  • Приоритет операторов
  • Резюме
  • Зачем в программе нужно ветвление?
  • Конструкция if
  • Логические операторы
    • Логическое И: оператор &&
    • Логическое ИЛИ: оператор ||
    • Логическое отрицание: оператор !
  • Условный оператор x ? y : z
  • Оператор ??
  • Конструкция switch
  • Конструкция match
  • Конструкция goto
  • Резюме
  • Зачем нужны циклы?
  • Способы организации циклов в PHP
  • Цикл while
  • Вложенные циклы
  • Досрочное прекращение циклов
  • Цикл do ... while
  • Цикл for
  • Резюме
  • Создание массива
  • Ассоциативные и индексные массивы
  • Многомерные массивы
  • Интерполяция элементов массива в строки
  • Конструкция list()
  • Обход массива
  • Цикл foreach
  • Сечения массива
  • Слияние массивов
  • Сравнение массивов
  • Проверка существования элементов массива
  • Строки как массивы
  • Количество элементов в массиве
  • Сумма элементов массива
  • Случайный элемент массива
  • Сортировка массива
  • Добавление/удаление элементов
  • Работа с ключами массива
  • Резюме
  • Зачем нужны функции?
  • Создание функции
    • Ключевое слово return
    • Объявление и вызов функции
  • Параметры и аргументы
    • Параметры по умолчанию
    • Переменное число параметров
    • Именованные аргументы
  • Типы аргументов и возвращаемого значения
  • Передача параметров по ссылке
  • Локальные переменные
  • Глобальные переменные
    • Массив $GLOBALS
    • Как работает инструкция global?
  • Статические переменные
  • Резюме
  • Рекурсивные функции
  • Вложенные функции
  • Переменные функции
  • Функции обратного вызова
  • Анонимные функции
  • Замыкания
  • Стрелочные функции
  • Резюме
  • Создание метода
  • Обращение к методам объекта
  • Проверка существования метода
  • Специальные методы
  • Конструктор __construct()
  • Параметры конструктора
  • Деструктор __destruct()
  • Методы-аксессоры
  • Статические методы
  • Класс — self, объект — $this
  • Динамические методы
  • Интерполяция объекта
  • Тип callable
  • Оператор ?->
  • Резюме
  • Отложенные вычисления
  • Манипуляция массивами
  • Делегирование генераторов
  • Экономия ресурсов
  • Использование ключей
  • Использование ссылки
  • Связь генераторов c объектами
  • Резюме

Часть III. Обработка текста и язык разметки HTML

  • Кодировки
  • Строки как массивы
  • UTF-8: расширение mbstring
  • Поиск в строке
  • Отрезание пробелов
  • Замена в тексте
  • Установка локали (локальных настроек)
  • Работа с HTML-кодом
  • Функции форматных преобразований
  • Объединение и разбиение строк
  • Сериализация объектов и массивов
  • JSON-формат
  • Резюме
  • Зачем нужен HTML?
  • HTML-код страницы
  • Устройство HTML-страницы
    • Параграф: тег <p>
    • Гиперссылки: тег <a>
    • Комментарии
    • Заголовки: теги <h1>...<h6>
    • Блоки: тег <div>
    • Списки: теги <ul>, <ol> и <li>
    • HTML на уровне текста
    • Изображения: тег <img>
  • Каскадные таблицы стилей
  • Резюме
  • Передача параметров методом GET
  • HTML-форма и ее обработчик
  • Текстовое поле
  • Поле для приема пароля
  • Текстовая область
  • Скрытое поле
  • Флажок
  • Список
  • Переключатель
  • Переадресация
  • Резюме
  • Multipart-формы
  • Тег выбора файла
  • Закачка файлов и безопасность
  • Поддержка закачки в PHP
    • Простые имена полей закачки
    • Получение закачанного файла
    • Пример: фотоальбом
    • Сложные имена полей
  • Резюме
  • Типы суперглобальных массивов
  • Cookie
  • Сессии
  • Переменные окружения
  • Массив $_SERVER
    • Элемент $_SERVER['DOCUMENT_ROOT']
    • Элемент $_SERVER['HTTP_ACCEPT']
    • Элемент $_SERVER['HTTP_HOST']
    • Элемент $_SERVER['HTTP_REFERER']
    • Элемент $_SERVER['HTTP_USER_AGENT']
    • Элемент $_SERVER['REMOTE_ADDR']
    • Элемент $_SERVER['SERVER_NAME']
    • Элемент $_SERVER['REQUEST_METHOD']
    • Элемент $_SERVER['QUERY_STRING']
    • Элемент $_SERVER['PHP_SELF']
    • Элемент $_SERVER['REQUEST_URI']
  • Резюме
  • Фильтрация или проверка?
  • Проверка данных
  • Фильтры проверки
  • Значения по умолчанию
  • Фильтры очистки
  • Пользовательская фильтрация данных
  • Фильтрация внешних данных
  • Конфигурационный файл php.ini
  • Резюме

Часть IV. Стандартные функции PHP

  • Встроенные константы
  • Функции округления
    • Функция abs()
    • Функция round()
    • Функция ceil()
    • Функция floor()
  • Случайные числа
    • Функция rand()
    • Функция getrandmax()
    • Функция random_int()
  • Перевод в различные системы счисления
    • Функция base_convert()
    • Функции bindec(), hexdec() и octdec()
    • Функции decbin(), decoct() и dechex()
  • Минимум и максимум
    • Функция min()
    • Функция max()
  • Не-числа
    • Функция is_nan()
    • Функция is_infinite()
  • Степенные функции
    • Функция sqrt()
    • Функция log()
    • Функция exp()
    • Функция pow()
  • Тригонометрия
  • Резюме
  • О текстовых и бинарных файлах
  • Открытие файла
    • Различия текстового и бинарного режимов
    • Сетевые соединения
    • Прямые и обратные слеши
    • Безымянные временные файлы
  • Закрытие файла
  • Чтение и запись
    • Блочные чтение/запись
    • Построчные чтение/запись
    • Чтение CSV-файла
  • Положение указателя текущей позиции
  • Работа с путями
  • Манипулирование целыми файлами
    • Чтение и запись целого файла
    • Чтение INI-файла
  • Другие функции
  • Блокирование файла
    • Рекомендательная и жесткая блокировки
    • Функция flock()
    • Типы блокировок
    • Блокировки с запретом «подвисания»
    • Пример счетчика
  • Резюме
  • Текущий каталог
  • Создание каталога
  • Работа с записями
  • Рекурсивный обход каталога
  • Фильтрация содержимого каталога
  • Удаление каталога
  • Класс Directory
  • Резюме
  • Идентификатор пользователя
  • Идентификатор группы
  • Владелец файла
  • Права доступа
    • Числовое представление прав доступа
    • Особенности каталогов
    • Примеры
  • Функции PHP
    • Назначение прав доступа
    • Определение атрибутов файла
    • Определение возможности доступа
  • Ссылки
    • Символические ссылки
    • Жесткие ссылки
  • Резюме
  • Запуск утилит
  • Оператор «обратные кавычки»
  • Экранирование командной строки
  • Каналы
    • Временные файлы
    • Открытие канала
    • Взаимная блокировка (deadlock)
  • Резюме
  • Представление времени в формате timestamp
    • Вычисление времени работы скрипта
    • Большие вещественные числа
    • Построение строкового представления даты
    • Построение timestamp
    • Разбор timestamp
  • Календарик
  • Географическая привязка
    • Хранение абсолютного времени
    • Перевод времени
    • Окончательное решение задачи
  • Календарные классы PHP
    • Класс DateTime
    • Класс DateTimeZone
    • Класс DateInterval
    • Класс DatePeriod
  • Начнем с примеров
    • Пример первый
    • Пример второй
    • Пример третий
    • Пример четвертый
  • Что такое регулярные выражения?
  • Терминология
  • Использование регулярных выражений в PHP
    • Сопоставление
    • Сопоставление с заменой
  • Язык регулярных выражений
    • Ограничители
    • Простые символы
    • Квантификаторы повторений
    • Мнимые символы
    • Оператор альтернативы
    • Группирующие скобки
    • «Карманы»
    • «Жадность» квантификаторов
    • Модификаторы
    • Незахватывающий поиск
    • Другие возможности регулярных выражений
  • Функции PHP
    • Поиск совпадений
    • Замена совпадений
    • Разбиение по регулярному выражению
    • Экранирование символов
    • Фильтрация массива
  • Примеры регулярных выражений
    • Преобразование адресов e-mail
    • Преобразование гиперссылок
  • Быть или не быть?
  • Ссылки
  • Резюме
  • Информационные функции
  • Принудительное завершение программы
  • Генерация кода во время выполнения
  • Функции хеширования
  • Подсветка PHP-кода
  • Резюме

Часть V. Основы объектно-ориентированного программирования

  • Расширение класса
    • Метод включения
    • Наследование
    • Переопределение методов
    • Константы __CLASS__ и __METHOD__
    • Позднее статическое связывание
  • Анонимные классы
  • Полиморфизм
    • Абстрагирование
    • Виртуальные методы
    • Расширение иерархии
  • Абстрактные классы и методы
  • Совместимость родственных типов
    • Уточнение типа в функциях
    • Оператор instanceof
    • Обратное преобразование типа
  • Резюме
  • Ограничения наследования
  • Создание интерфейса
  • Наследование интерфейсов
  • Реализация нескольких интерфейсов
  • Реализует ли объект интерфейс?
  • Резюме
  • Создание трейта
  • Трейты и наследование
  • Разрешение конфликтов
  • Вложенные трейты
  • Резюме
  • Создание перечисления
  • Типизированные перечисления
  • Сравнение значений
  • Перечисления как классы
    • Ограничения перечислений
    • Методы перечислений
    • Использование трейтов
    • Константы
  • Резюме
  • Базовый синтаксис
  • Конструкция throw
  • Раскрутка стека
  • Исключения и деструкторы
  • Интерфейс класса Exception
  • Генерация исключений в классах
  • Создание собственных исключений
  • Перехват собственных исключений
  • Повторная генерация исключений
  • Блок finally
  • Использование интерфейсов
  • Резюме
  • Что такое ошибка?
    • Роли ошибок
    • Виды ошибок
  • Ошибки и исключения
  • Контроль ошибок
    • Директивы контроля ошибок
    • Установка режима вывода ошибок
    • Оператор отключения ошибок
    • Перехват ошибок
    • Генерация ошибок
    • Стек вызовов функций
  • Резюме
  • Проблема именования
  • Объявление пространства имен
  • Иерархия пространства имен
  • Текущее пространство имен
  • Импортирование
  • Автозагрузка классов
    • Функция spl_autoload_register()
  • Резюме
  • Зачем нужны шаблоны проектирования?
  • Одиночка (Singleton)
  • Фабричный метод (Factory Method)
  • Модель-Представление-Контроллер
  • Резюме
  • Стандартное поведение foreach
  • Интерфейсы для создания итераторов
    • Интерфейс Iterator
    • Интерфейс IteratorAggregate
    • Пример собственного итератора
  • Как PHP обрабатывает итераторы?
  • Множественные итераторы
  • Виртуальные массивы
  • Библиотека SPL
    • Класс ArrayObject
    • Класс DirectoryIterator
    • Класс FilterIterator
    • Класс LimitIterator
    • Рекурсивные итераторы
  • Резюме
  • Механизм отражений
    • Отражение функции: ReflectionFunction
    • Отражение параметра функции: ReflectionParameter
    • Отражение класса: ReflectionClass
    • Пояснение: отражения и наследование
    • Отражение свойства класса: ReflectionProperty
    • Отражение метода класса: ReflectionMethod
    • Отражение библиотеки расширения: ReflectionExtension
    • Полезное добавление: класс Reflection
    • Обработка исключений: ReflectionException
    • Иерархия
  • Резюме

Часть VI. Расширения PHP

  • Подключение расширений
  • Конфигурационный файл php.ini
    • Структура php.ini
    • Параметры языка PHP
    • Ограничение ресурсов
    • Загрузка файлов
  • Обзор расширений
  • Резюме
  • Что такое база данных?
    • Неудобство работы с файлами
    • Почему PostgreSQL?
  • Установка PostgreSQL
    • Установка в Windows
    • Установка в macos
    • Установка в Linux Ubuntu
    • Администрирование базы данных
  • Введение в СУБД и SQL
    • Первичные ключи
    • Управление базами данных
    • Управление таблицами
    • Комментарии в SQL
    • Вставка записей в таблицу
    • Удаление записей
    • Обновление записей
    • Выборка данных
  • Резюме
  • Настройка PDO
  • Установка соединения с базой данных
  • Выполнение SQL-запросов
  • Обработка ошибок
  • Извлечение данных
  • Параметризация SQL-запросов
  • Заполнение связанных таблиц
  • Резюме
  • Универсальная функция getimagesize()
  • Работа с изображениями и библиотека GD
  • Пример создания изображения
  • Создание изображения
  • Загрузка изображения
  • Определение параметров изображения
  • Сохранение изображения
  • Преобразование изображения в палитровое
  • Работа с цветом в формате RGB
    • Создание нового цвета
    • Текстовое представление цвета
    • Получение ближайшего в палитре цвета
    • Эффект прозрачности
    • Получение RGB-составляющих
    • Использование полупрозрачных цветов
  • Графические примитивы
    • Копирование изображений
    • Прямоугольники
    • Выбор пера
    • Линии
    • Дуга сектора
    • Закраска произвольной области
    • Закраска текстурой
    • Многоугольники
    • Работа с пикселами
  • Работа с фиксированными шрифтами
    • Загрузка шрифта
    • Параметры шрифта
    • Вывод строки
  • Работа со шрифтами TrueType
    • Вывод строки
    • Проблемы с русскими буквами
    • Определение границ строки
    • Коррекция функции imageTtfBBox()
    • Пример
  • Резюме
  • Файловые функции и потоки
    • Другие схемы
    • Контекст потока
  • Работа с сокетами
    • «Эмуляция» браузера
    • Неблокирующее чтение
  • Функции для работы с DNS
  • Расширение CURL
  • Отправка данных методом POST
  • Передача пользовательского агента
  • Резюме
  • Почему Redis?
  • Установка сервера Redis
    • В среде Linux Ubuntu
    • В среде macos
    • В среде Windows
    • Проверка работоспособности
  • Клиент redis-cli
  • Вставка и получение значений
  • Обновление и удаление значений
  • Управление ключами
  • Время жизни ключа
  • Типы данных
  • Хеш
  • Множество
  • Отсортированное множество
  • Базы данных
  • Производительность Redis
  • PHP-расширение Redis
    • Установка расширения php-redis
    • Хранение сессий в Redis
    • Методы для обслуживания данных в Redis
    • Кеширование данных
  • Резюме

Часть VII. Компоненты

  • Composer: управление компонентами
  • Установка Composer
    • Установка в Windows
    • Установка в macos
    • Установка в Linux Ubuntu
  • Где искать компоненты?
  • Установка компонента
  • Использование компонента
  • Полезные компоненты
    • Компонент psySH: интерактивный отладчик
    • Компонент phinx: миграции
  • Резюме
  • PSR-стандарты
  • PSR-1: основной стандарт кодирования
    • PHP-теги
    • Кодировка UTF-8
    • Разделение объявлений и выполнения действий
    • Пространство имен
    • Именование классов, методов и констант классов
  • PSR-12. Руководство по стилю кода
    • Соблюдение PSR-1
    • Отступы
    • Файлы
    • Строки
    • Ключевые слова
    • Пространства имен
    • Классы
    • Методы
    • Управляющие структуры
    • Автоматическая проверка стиля
  • PSR-4: автозагрузка
  • Резюме
  • Установка
  • Документирование PHP-элементов
  • Теги
  • Резюме
  • Синтаксис
  • Отражения для работы атрибутами
  • Класс атрибута
  • Аргументы атрибутов
  • Резюме
  • Имя компонента и пространство имен
  • Организация компонента
  • Реализация компонента
    • Базовый класс навигации Pager
    • Постраничная навигация по содержимому папки
    • Базовый класс представления View
    • Представление: список страниц
    • Собираем все вместе
    • Постраничная навигация по содержимому файла
    • Постраничная навигация по содержимому базы данных
    • Представление: диапазон элементов
  • Публикация компонента
  • Зачем разрабатывать собственные компоненты?

Заключение

Приложение. Описание электронного архива