Современный PHP

Справочник PHP

Современный PHP

Справочник PHP. Базовые статьи о том, как PHP выполняется, как читать синтаксис и где проходят границы между слабой динамикой языка и современной типизацией. Раздел про встроенные структуры и расширения, которые часто встречаются в реальном PHP-коде без фреймворковой оболочки.

RU Encyclopedias php языки программирования ООП
52Lessons
8Modules
RUEncyclopedia

Contents

1

Ядро языка

1 Версии PHP и режимы выполнения Справочная статья о поддерживаемых ветках PHP, SAPI, `php.ini`, CLI/FPM/CGI и том, почему lifecycle версии влияет на безопасность и совместимость. Связана с [Миграции между версиями PHP](course://article/Миграции между версиями PHP), [CLI и встроенный сервер](course://article/CLI и встроенный сервер) и [PHP-FPM, RoadRunner и долгоживущие воркеры](course://article/PHP-FPM, RoadRunner и долгоживущие воркеры). 2 Синтаксис, теги и подключение файлов Разбор `<?php`, инструкций, комментариев, `include`, `require`, `require_once`, `declare` и типичных ловушек файлов со смешанным HTML/PHP. Смежно с [HTTP-заголовки, ответы и редиректы](course://article/HTTP-заголовки, ответы и редиректы). 3 Типы и strict_types Определяет scalar types, `null`, `mixed`, `never`, union/intersection/DNF types, nullable-синтаксис, coercion и реальную область действия `declare(strict_types=1)`. Ссылается на [Массивы как ordered map](course://article/Массивы как ordered map) и [PHPDoc, generics и статический анализ](course://article/PHPDoc, generics и статический анализ). 4 Операторы и управляющие конструкции Энциклопедическая статья про выражения, precedence, comparison, null coalescing, spaceship, `if`, `match`, `switch`, циклы и особенности `foreach`. Полезна вместе с [Массивы как ordered map](course://article/Массивы как ordered map). 5 Функции, замыкания и callable Описывает user-defined и built-in функции, scope, параметры, named arguments, variadic, return types, references, anonymous functions, arrow functions и first-class callable syntax. Связана с [PHPDoc, generics и статический анализ](course://article/PHPDoc, generics и статический анализ). 6 Ошибки, исключения и Throwable Разбирает error levels, warnings, `Error`, `Exception`, `Throwable`, `try/catch/finally`, custom exceptions и отличие ошибок рантайма от доменных исключений. Связана с [Транзакции и режимы ошибок PDO](course://article/Транзакции и режимы ошибок PDO) и [Очереди, фоновые задачи и воркеры](course://article/Очереди, фоновые задачи и воркеры). 7 Генераторы и Fiber Справка по `yield`, `Generator`, ленивой итерации и Fiber как full-stack interruptible functions для async-экосистемы PHP. Смежно с [SPL, итераторы и коллекции](course://article/SPL, итераторы и коллекции) и [Асинхронный PHP и event loop](course://article/Асинхронный PHP и event loop).
2

Данные и стандартная библиотека

8 Массивы как ordered map Полная статья о PHP array как ordered map: int/string keys, key casting, overwrite, append, destructuring, `array_*` функции и отличие list от associative array. Связана с [Операторы и управляющие конструкции](course://article/Операторы и управляющие конструкции). 9 Строки, UTF-8 и mbstring Объясняет байтовую природу PHP strings, interpolation, heredoc/nowdoc, string functions, UTF-8, `mb_*`, encoding conversion и ошибки при работе с кириллицей. Смежно с [XSS, экранирование вывода и шаблоны](course://article/XSS, экранирование вывода и шаблоны). 10 Дата и время Справка по `DateTime`, `DateTimeImmutable`, time zones, intervals, periods, timestamps, formatting/parsing и типичным багам с локалью и DST. Связана с [JSON, сериализация и форматы данных](course://article/JSON, сериализация и форматы данных). 11 JSON, сериализация и форматы данных Описывает `json_encode`, `json_decode`, flags, exceptions, numeric/string edge cases, PHP serialization и границы безопасного обмена данными. Связана с [Ошибки, исключения и Throwable](course://article/Ошибки, исключения и Throwable). 12 Файловая система и stream wrappers Статья о путях, permissions, `file_get_contents`, `fopen`, `SplFileObject`, `php://input`, stream contexts и безопасной работе с пользовательскими путями. Смежно с [Загрузка файлов](course://article/Загрузка файлов). 13 SPL, итераторы и коллекции Обзор SPL interfaces/classes, `Iterator`, `IteratorAggregate`, `ArrayObject`, `SplFileInfo`, heaps/queues и случаев, где они удобнее обычного массива. Связана с [Генераторы и Fiber](course://article/Генераторы и Fiber).
3

Объектная модель

14 Классы, объекты и видимость Покрывает class/object basics, properties, methods, constructors, destructors, visibility, static, constants, readonly и сравнение объектов. Связана с [Наследование, интерфейсы и трейты](course://article/Наследование, интерфейсы и трейты). 15 Наследование, интерфейсы и трейты Справка по `extends`, `implements`, abstract/final, variance, traits, конфликтам методов, composition vs inheritance и контрактам. Смежно с [PSR-1, PSR-12 и стиль кода](course://article/PSR-1, PSR-12 и стиль кода). 16 Неймспейсы и use Объясняет namespace declarations, fully qualified names, `use`, aliases для classes/functions/constants и типичные конфликты имен. Связана с [Autoloading и PSR-4](course://article/Autoloading и PSR-4). 17 Autoloading и PSR-4 Статья про `spl_autoload_register`, Composer autoload, PSR-4 namespace prefix, base directory, case-sensitive class names и `dump-autoload`. Связана с [Composer, Packagist и composer.json](course://article/Composer, Packagist и composer.json). 18 Enum в PHP Описывает unit enums, backed enums, cases, methods, interfaces, `from`/`tryFrom`, serialization и отличие enum от набора constants. Связана с [Типы и strict_types](course://article/Типы и strict_types). 19 Атрибуты и Reflection Справка по PHP 8 attributes, target/repeatable rules, Reflection API, metadata-driven code и ограничениям по сравнению с комментариями PHPDoc. Смежно с [PHPDoc, generics и статический анализ](course://article/PHPDoc, generics и статический анализ).
4

Веб-слой и HTTP

20 SAPI и суперглобалы Объясняет роль SAPI, request lifecycle, `$_SERVER`, `$_GET`, `$_POST`, `$_REQUEST`, `$_FILES`, `$_COOKIE`, `$_SESSION` и почему superglobals стоит изолировать. Связана с [PSR-7, middleware и HTTP-клиенты](course://article/PSR-7, middleware и HTTP-клиенты). 21 GET, POST и фильтрация ввода Справка по query string, form data, `filter_input`, validation vs sanitization, empty/missing values и безопасному преобразованию user input. Смежно с [CSRF и state-changing запросы](course://article/CSRF и state-changing запросы). 22 Куки и сессии Разбирает `setcookie`, session ID, session storage, fixation, regeneration, `Secure`, `HttpOnly`, `SameSite` и границы надежности PHP sessions. Связана с [Конфигурация безопасности PHP](course://article/Конфигурация безопасности PHP). 23 Загрузка файлов Описывает `$_FILES`, upload errors, limits, MIME/type validation, temporary files, storage outside web root и риски executable uploads. Связана с [Файловая система и stream wrappers](course://article/Файловая система и stream wrappers). 24 HTTP-заголовки, ответы и редиректы Статья про `header`, `http_response_code`, redirects, cache headers, content type, headers already sent и корректное завершение после redirect. Связана с [Синтаксис, теги и подключение файлов](course://article/Синтаксис, теги и подключение файлов). 25 PSR-7, middleware и HTTP-клиенты Объясняет HTTP messages, request/response interfaces, streams, uploaded files, middleware-подход и связь PSR-7 с PSR-15/PSR-18. Смежно с [SAPI и суперглобалы](course://article/SAPI и суперглобалы) и [Slim и Mezzio](course://article/Slim и Mezzio). 26 CLI и встроенный сервер Справка по CLI SAPI, arguments, stdin/stdout/stderr, exit codes, `php -S`, отличиям от веб-SAPI и локальной отладке без Apache/Nginx. Связана с [Версии PHP и режимы выполнения](course://article/Версии PHP и режимы выполнения).
5

Базы данных и безопасность

27 PDO и подключение к базе Статья о DSN, drivers, connection options, persistent connections, fetch modes и базовой модели PDO/PDOStatement. Связана с [Prepared statements и SQL injection](course://article/Prepared statements и SQL injection). 28 Prepared statements и SQL injection Покрывает `prepare`, named/positional placeholders, `execute`, bind by value/reference, ограничения placeholders и защиту от SQL injection. Смежно с [GET, POST и фильтрация ввода](course://article/GET, POST и фильтрация ввода). 29 Транзакции и режимы ошибок PDO Описывает `beginTransaction`, `commit`, `rollBack`, implicit commits, autocommit, `ERRMODE_EXCEPTION` и обработку database errors. Связана с [Ошибки, исключения и Throwable](course://article/Ошибки, исключения и Throwable). 30 Пароли, хэши и криптография Справка по `password_hash`, `password_verify`, `password_needs_rehash`, алгоритмам, salts, timing, `random_bytes` и тому, что не стоит писать самому. Связана с [Куки и сессии](course://article/Куки и сессии). 31 XSS, экранирование вывода и шаблоны Разбирает XSS, context-aware output encoding, `htmlspecialchars`, HTML attributes, URLs, JS/CSS contexts и опасность самодельной sanitization. Смежно с [Строки, UTF-8 и mbstring](course://article/Строки, UTF-8 и mbstring). 32 CSRF и state-changing запросы Описывает CSRF, unsafe methods, synchronizer tokens, double-submit cookie pattern, SameSite, Origin/Referer checks и почему GET не должен менять состояние. Связана с [GET, POST и фильтрация ввода](course://article/GET, POST и фильтрация ввода). 33 Конфигурация безопасности PHP Справка по `display_errors`, `error_reporting`, `expose_php`, upload limits, session settings, `allow_url_include`, document root и production-настройкам. Связана с [Версии PHP и режимы выполнения](course://article/Версии PHP и режимы выполнения).
6

Экосистема и качество кода

34 Composer, Packagist и composer.json Описывает dependency management, `require`, `require-dev`, package names, repositories, Packagist, scripts и autoload-секцию `composer.json`. Связана с [Autoloading и PSR-4](course://article/Autoloading и PSR-4). 35 composer.lock, install/update и audit Справка о разнице `install` и `update`, lock-файле, reproducible installs, audit, platform requirements, `--no-dev` и production autoload optimization. Связана с [Миграции между версиями PHP](course://article/Миграции между версиями PHP). 36 PSR-1, PSR-12 и стиль кода Разбирает PHP-FIG, смысл PSR, базовый стандарт, современный coding style, 4 spaces, file layout, braces, visibility и границы автоматического форматирования. Смежно с [Неймспейсы и use](course://article/Неймспейсы и use). 37 PHPDoc, generics и статический анализ Описывает docblocks, array shapes, template/generic annotations, `mixed`, baseline, уровни строгости PHPStan/Psalm и связь PHPDoc с native types. Связана с [Типы и strict_types](course://article/Типы и strict_types). 38 PHPUnit, моки и стабы Энциклопедическая статья о PHPUnit как инструменте, test cases, assertions, fixtures, data providers, mocks/stubs и месте тестов в CI без учебных заданий. Связана с [Ошибки, исключения и Throwable](course://article/Ошибки, исключения и Throwable). 39 CI, линтеры и автоматические проверки Справка по типичному pipeline PHP-проекта: Composer scripts, PHPStan/Psalm, PHPUnit, PHP-CS-Fixer или PHP_CodeSniffer, security audit и checks перед merge. Связана с [composer.lock, install/update и audit](course://article/composer.lock, install/update и audit). 40 Миграции между версиями PHP Справка по migration guides, deprecations, backward incompatible changes, поддержке расширений, проверке зависимостей и стратегии обновления 8.x. Связана с [Версии PHP и режимы выполнения](course://article/Версии PHP и режимы выполнения) и [composer.lock, install/update и audit](course://article/composer.lock, install/update и audit).
7

Фреймворки и платформы

41 Laravel Справочная статья о Laravel: service container, facades, routing, controllers, Eloquent, migrations, Blade, Artisan, queues и экосистема Laravel. Связана с [Composer, Packagist и composer.json](course://article/Composer, Packagist и composer.json), [Очереди, фоновые задачи и воркеры](course://article/Очереди, фоновые задачи и воркеры) и [XSS, экранирование вывода и шаблоны](course://article/XSS, экранирование вывода и шаблоны). 42 Symfony Описывает Symfony Components, HttpFoundation, Routing, DependencyInjection, Console, EventDispatcher, Messenger, Flex и роль Symfony как framework и набора переиспользуемых компонентов. Связана с [PSR-7, middleware и HTTP-клиенты](course://article/PSR-7, middleware и HTTP-клиенты) и [Composer, Packagist и composer.json](course://article/Composer, Packagist и composer.json). 43 Yii Справка по Yii как full-stack фреймворку: MVC, Active Record, Gii, widgets, RBAC, forms, validation и типичные сценарии админок и CRUD-приложений. Смежно с [PDO и подключение к базе](course://article/PDO и подключение к базе). 44 Slim и Mezzio Разбирает microframework-подход в PHP, routing, middleware pipeline, PSR-7/PSR-15, DI-контейнеры и случаи, где легкий стек удобнее full-stack фреймворка. Связана с [PSR-7, middleware и HTTP-клиенты](course://article/PSR-7, middleware и HTTP-клиенты). 45 CMS и e-commerce на PHP Обзор WordPress, Drupal, TYPO3, Magento/OpenMage и других PHP-платформ: plugin/module architecture, themes, hooks/events, обновления, безопасность и границы кастомизации. Связана с [Конфигурация безопасности PHP](course://article/Конфигурация безопасности PHP) и [composer.lock, install/update и audit](course://article/composer.lock, install/update и audit). 46 Выбор PHP-фреймворка Сравнивает full-stack, component-based и microframework-подходы по ecosystem, hiring, performance, legacy constraints, hosting, learning curve и долгосрочной поддержке. Связана с [Laravel](course://article/Laravel), [Symfony](course://article/Symfony), [Yii](course://article/Yii) и [Slim и Mezzio](course://article/Slim и Mezzio).
8

Асинхронность и долгоживущие процессы

47 Асинхронный PHP и event loop Объясняет cooperative concurrency, event loop, non-blocking I/O, promises, coroutines, Fiber, ReactPHP, Amp и почему обычный блокирующий код меняет поведение async-приложений. Связана с [Генераторы и Fiber](course://article/Генераторы и Fiber). 48 Swoole и OpenSwoole Справка по Swoole/OpenSwoole: coroutine runtime, HTTP/WebSocket/TCP servers, timers, channels, process management, shared state и отличия от PHP-FPM. Связана с [PHP-FPM, RoadRunner и долгоживущие воркеры](course://article/PHP-FPM, RoadRunner и долгоживущие воркеры). 49 PHP-FPM, RoadRunner и долгоживущие воркеры Сравнивает PHP-FPM request isolation с RoadRunner worker model, preload/bootstrap, memory leaks, stale state, graceful reloads и требования к контейнерам приложения. Связана с [Версии PHP и режимы выполнения](course://article/Версии PHP и режимы выполнения) и [Swoole и OpenSwoole](course://article/Swoole и OpenSwoole). 50 Очереди, фоновые задачи и воркеры Описывает job queues, retry, backoff, idempotency, dead-letter queues, delayed jobs, supervisors и отличие фоновых задач от async HTTP. Связана с [Ошибки, исключения и Throwable](course://article/Ошибки, исключения и Throwable) и [Laravel](course://article/Laravel). 51 WebSocket, SSE и realtime в PHP Справка по realtime-подходам: WebSocket, Server-Sent Events, long polling, broadcast servers, connection lifecycle, sticky sessions и ограничения shared hosting. Связана с [Swoole и OpenSwoole](course://article/Swoole и OpenSwoole) и [Асинхронный PHP и event loop](course://article/Асинхронный PHP и event loop). 52 Наблюдаемость и эксплуатация PHP-сервисов Описывает logs, metrics, tracing, health checks, memory limits, slow requests, worker restarts, opcache и production-диагностику для FPM и долгоживущих процессов. Связана с [Конфигурация безопасности PHP](course://article/Конфигурация безопасности PHP) и [PHP-FPM, RoadRunner и долгоживущие воркеры](course://article/PHP-FPM, RoadRunner и долгоживущие воркеры).