Учебная платформа 2026
Основной маршрут ориентирован на PHP 8.5. Примеры, которые запускаются во встроенном Playground, сохраняют совместимость с PHP 8.4, потому что локальный WebAssembly runtime проекта использует эту ветку. Для базы выбран MySQL 8.4 LTS: долговременная линия удобнее для учебного проекта, чем быстро меняющаяся innovation-ветка.
Не привязывайте проект к слову latest. Зафиксируйте минимальную поддерживаемую версию PHP, необходимые расширения и линию базы в README и composer.json. Обновление должно быть отдельным проверяемым решением.
Паспорт окружения
php -v
php --ini
php -m
composer show --platform
mysql --versionСтруктура проекта
app/
public/index.php
src/
templates/
migrations/
tests/
composer.json
composer.lock
.env.exampleComposer без сюрпризов
composer.json описывает допустимые диапазоны, а composer.lock фиксирует разрешённые версии приложения. В CI и production выполняют composer install по lock-файлу; composer update — осознанная операция разработки с обзором изменений. Платформенные зависимости php и ext-* не устанавливают расширения, зато делают требования машиночитаемыми.
Автозагрузка PSR-4 связывает пространство имён с каталогом. После изменения mapping выполните composer dump-autoload и проверьте регистр имён: Linux различает его строже типичной Windows-среды.
Конфигурация и секреты
В репозитории хранится .env.example с названиями переменных, но без действительных паролей. Production получает секреты из панели хостинга или защищённого окружения. Код читает конфигурацию один раз в composition root и передаёт готовые значения объектам, а не обращается к глобальному окружению в каждой функции.
Не выводите DSN, пароль, токен или полный stack trace пользователю. Для журнала также применяйте allowlist полей: секрет, попавший в лог, остаётся секретом, который уже труднее заменить и удалить.
Проверка готовности
Создайте диагностическую команду, которая проверяет версию PHP, расширения и возможность открыть соединение, но не меняет данные. Она должна завершаться ненулевым кодом при несоответствии. Отдельный HTTP health endpoint не обязан раскрывать те же подробности: наружу достаточно состояния сервиса и идентификатора сборки.
Практика главы
Составьте файл требований к платформе и чек-лист первого запуска. Другой разработчик должен понять, какие команды выполнить, не спрашивая, какой ini использовался и откуда взять структуру базы.
Закрепите материал
Отметка, заметка, чек-лист и ответы остаются в localStorage этого браузера и не отправляются в аналитику.
Перелинковка со справочником
Проверка актуальности
- php.nethttps://www.php.net/supported-versions.phpПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- php.nethttps://www.php.net/releases/8.5/en.phpПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- dev.mysql.comhttps://dev.mysql.com/doc/refman/8.4/en/Первичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- getcomposer.orghttps://getcomposer.org/doc/01-basic-usage.mdПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- php-fig.orghttps://www.php-fig.org/psr/psr-4/Первичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
Текст и схемы созданы для этого самоучителя без воспроизведения страниц, иллюстраций и листингов приложенной книги. Проверено: .