Оглавление
Учебник PHP
Последовательный курс PHP с нуля: от первой программы до продвинутых тем.
1.Основы
- Введение в PHPЧто такое PHP, где он выполняется и как выглядит первая программа.
- ПеременныеКак объявлять переменные в PHP, давать им имена и подставлять в строки.
- Типы данныхОсновные типы данных PHP — строки, числа, логические значения, массивы и null.
- ОператорыАрифметические, логические операторы и операторы сравнения в PHP, приоритет операций.
- СтрокиРабота со строками в PHP — кавычки, склейка, длина, поиск, замена и функции для кириллицы.
- КонстантыКонстанты в PHP — const и define, правила имён, встроенные и «волшебные» константы.
- Вывод и форматированиеКак выводить данные в PHP — echo и print, многострочный текст heredoc, шаблоны printf и sprintf, форматирование чисел и отладочный вывод.
2.Управление ходом программы
3.Массивы и функции
- МассивыСписки и ассоциативные массивы в PHP — создание, изменение, перебор и полезные функции.
- ФункцииКак объявлять и вызывать функции в PHP — параметры, возврат значения, типы и область видимости.
- Функции для массивовОбработка массивов в PHP без циклов — array_map, array_filter, array_reduce, поиск и срезы.
- Сортировка массивовСортировка в PHP — sort, rsort, asort, ksort, своё правило через usort и оператор «космический корабль».
- Анонимные функции и замыканияФункции как значения в PHP — анонимные и стрелочные функции, конструкция use, тип callable.
- Возможности функцийИменованные аргументы, переменное число аргументов, передача по ссылке, статические переменные и рекурсия в PHP.
- Числа и математикаМатематические функции PHP — округление, форматирование чисел, случайные числа и точность дробей.
- Дата и времяРабота с датами в PHP — функция date, класс DateTimeImmutable, форматы, сложение и разница дат.
- Регулярные выраженияРегулярные выражения в PHP — preg_match, preg_replace, preg_split, группы и основные обозначения шаблонов.
4.Объектно-ориентированное программирование
- Классы и объектыЧто такое класс и объект в PHP, как описывать свойства и методы и создавать объекты.
- Конструктор и инкапсуляцияКонструктор класса, модификаторы public и private, свойства только для чтения и константы.
- НаследованиеНаследование классов в PHP — extends, protected, переопределение методов, parent и полиморфизм.
- Интерфейсы и абстрактные классыИнтерфейсы и абстрактные классы в PHP — зачем нужны, чем отличаются и как их использовать.
- Статические свойства и методыСлово static в классах PHP — методы и свойства класса, self и static, фабричные методы.
- ТрейтыТрейты в PHP — повторное использование кода в нескольких классах, свойства и абстрактные методы в трейтах, разрешение конфликтов.
- ПеречисленияПеречисления (enum) в PHP — варианты, значения, методы, создание из строки и использование в match.
- Магические методыМагические методы PHP — __toString, __get и __set, __call, __invoke и клонирование объектов.
- Абстрактные классы, final и staticАбстрактные классы и методы, запрет наследования словом final, разница между self и static и шаблонный метод.
- Встроенные интерфейсыИнтерфейсы PHP, которые учат объект вести себя как массив — Countable, IteratorAggregate, ArrayAccess, JsonSerializable и Stringable.
5.Обработка ошибок
6.Файлы и данные
- Чтение и запись файловРабота с файлами в PHP — запись, чтение, дозапись, чтение по строкам, проверка существования и удаление.
- Формат JSONJSON в PHP — json_encode и json_decode, работа с кириллицей, обработка ошибок и хранение данных в файле.
- Папки и путиРабота с папками в PHP — создание, список файлов, поиск по маске, части пути и сведения о файле.
7.PHP и веб
- Формы и данные запросаОбработка форм в PHP — массивы $_GET и $_POST, проверка данных и защита от XSS через htmlspecialchars.
- Сессии и кукиСессии и куки в PHP — как запоминать посетителя между запросами, session_start, $_SESSION и setcookie.
- Запросы и ответы HTTPКак PHP получает запрос и формирует ответ — метод и адрес запроса, заголовки, коды состояния, перенаправление и ответ в JSON.
- Загрузка файловКак принять файл от пользователя в PHP — форма, массив $_FILES, проверка размера и типа, безопасное сохранение.
- БезопасностьОсновы безопасности сайта на PHP — XSS и экранирование, SQL-инъекции, хеширование паролей, CSRF-токены и проверка входных данных.
- Запросы к другим сайтамКак из PHP обратиться к чужому API — file_get_contents, расширение cURL, отправка JSON, заголовки, код ответа и обработка ошибок.
- Отправка писемКак отправлять письма из PHP — функция mail, библиотека PHPMailer и SMTP, письма в формате HTML, вложения и защита заголовков.
- Регистрация и входКак сделать регистрацию и вход на PHP — таблица пользователей, хеширование пароля, проверка при входе, сессия, закрытые страницы и выход.
8.Базы данных
- Подключение к базе данныхРабота с базой данных в PHP через PDO — подключение, создание таблицы, выборка строк и обработка ошибок.
- Подготовленные запросыПодготовленные запросы PDO в PHP — как безопасно подставлять данные в SQL и защититься от SQL-инъекций.
- Изменение данных и транзакцииINSERT, UPDATE и DELETE через PDO, число изменённых строк и транзакции — как выполнить несколько запросов как одно целое.
- Связи таблицСвязанные таблицы в базе данных — внешний ключ, JOIN, LEFT JOIN, подсчёты с GROUP BY и проблема лишних запросов.
- MySQLiРабота с MySQL через расширение MySQLi — подключение, запросы, подготовленные выражения, процедурный стиль и сравнение с PDO.
- Постраничный выводКак выводить записи из базы данных страницами — LIMIT и OFFSET, расчёт смещения, число страниц, ссылки и проверка номера страницы.
- Проектирование таблицКак спроектировать таблицы базы данных — типы столбцов, первичный ключ, ограничения, внешние ключи, индексы и связь многие-ко-многим.
9.Организация проекта
- Пространства имён и ComposerКак устроен проект на PHP — пространства имён, автозагрузка классов по PSR-4 и установка библиотек через Composer.
- Структура приложенияКак устроен сайт на PHP — подключение файлов, единая точка входа, маршрутизатор, разделение на модель, контроллер и шаблон.
- ТестированиеАвтоматические тесты в PHP — зачем они нужны, установка PHPUnit, первый тест, проверки и тестирование исключений.
- Скрипты для командной строкиPHP в терминале — запуск скрипта, аргументы argv, чтение ввода, коды завершения, getopt и запуск по расписанию.
- Настройки и окружениеГде хранить настройки проекта на PHP — файл конфигурации, переменные окружения, файл .env, разные режимы для разработки и сервера.
- Качество кодаКак держать код на PHP в порядке — стандарт PSR-12, автоматическое форматирование, статический анализ PHPStan и команды Composer.
10.Современный PHP
- Система типовТипы в современном PHP — строгий режим strict_types, nullable и объединённые типы, void, never и типизированные свойства.
- ГенераторыГенераторы в PHP — ключевое слово yield, экономия памяти, ключи, бесконечные последовательности и чтение больших файлов.
- Современный синтаксисВозможности PHP 8 — оператор ?->, деструктуризация массивов, оператор распаковки, readonly-классы, ссылка на функцию и атрибуты.
- Новое в PHP 8.4Возможности PHP 8.4 — хуки свойств, раздельная видимость чтения и записи, вызов метода сразу после new и новые функции для массивов.