Чему вы научитесь
Вы построите приложение как систему явных границ: браузер отвечает за интерфейс, PHP — за сценарии и правила, MySQL — за долговечные факты, а HTTP — за проверяемый контракт между ними. В конце получится менеджер задач с регистрацией, ролями, историей, HTML-интерфейсом и JSON API.
Маршрут не обещает изучить язык через копирование большого листинга. Каждая глава создаёт мысленную модель, предлагает небольшую реализацию и заставляет проверить отрицательный сценарий.
Почему это самостоятельная работа
Приложенная книга Robin Nixon использована только как ориентир по широте предметов: PHP, реляционные данные, браузерный JavaScript и сборка динамического сайта. Её порядок глав, объяснения, иллюстрации и программные листинги не воспроизводятся. Структура этого самоучителя заново спроектирована вокруг жизненного цикла запроса, границ доверия и выпуска приложения.
Факты, зависящие от времени, сверены с первичными источниками. На август 2026 основной язык — PHP 8.5 с совместимым PHP 8.4 runtime для встроенных примеров; база — MySQL 8.4 LTS; браузерный слой использует native ES modules и Fetch API.
Как проходить
Читайте главы по порядку при первом знакомстве. После каждой главы выполните практику и сохраните решение в собственном репозитории. Ссылки внутри текста ведут на функции, классы, инструменты и проекты этого сервиса; используйте Ctrl/Command+K, когда нужен точный контракт API.
Прогресс и заметка сохраняются только в localStorage вашего браузера. Самоучитель не отправляет код или ответы на сервер.
Редакционные границы
Материал написан для самостоятельного обучения и не является заменой release notes, migration guide или security review конкретного проекта. Точные patch-версии меняются быстрее учебного текста, поэтому перед production-обновлением сверяйте поддерживаемую ветку и несовместимости.
В самоучителе нет кода серверного eval, shell-выполнения пользовательского PHP или include/require по загруженному пути. Встроенный Playground остаётся отдельным локальным WebAssembly Worker.
Закрепите материал
Отметка, заметка, чек-лист и ответы остаются в localStorage этого браузера и не отправляются в аналитику.
Оглавление самоучителя
I. Карта системы
- Глава 1Один запрос как модель всего приложения
Сначала соберите цельную карту запроса: это предотвращает путаницу между кодом браузера, PHP-процессом, SQL и сетевым протоколом.
55 минут - Глава 2Воспроизводимая среда вместо случайной настройки
Рабочая среда считается готовой, когда её можно описать, проверить командами и повторить на другой машине без ручной магии.
70 минут
II. Язык приложения
- Глава 3Значения, типы и управляемый поток PHP
Типы помогают не тогда, когда украшают сигнатуру, а когда фиксируют допустимые состояния и не пропускают сырой ввод в предметную логику.
90 минут - Глава 4Объекты, которые защищают правила
Хороший объект не изображает таблицу базы, а не позволяет приложению оказаться в запрещённом предметном состоянии.
85 минут
III. Серверное веб-приложение
- Глава 5HTTP, маршруты и ответы без скрытой магии
Маршрут связывает метод и путь со сценарием, а ответ явно фиксирует статус, заголовки и тело — до того, как начался вывод.
80 минут - Глава 6Шаблоны, формы и загрузки как разные границы
Форма — это внешний протокол: сервер проверяет каждый ожидаемый ключ, а шаблон только отображает подготовленную модель представления.
95 минут
IV. Данные и MySQL
- Глава 7Реляционная модель до первой таблицы
Схема базы описывает допустимые факты, а не текущий экран: сначала определите сущности и ограничения, затем выбирайте таблицы и индексы.
90 минут - Глава 8SQL, который остаётся понятным под нагрузкой
Запрос сначала должен выражать точный набор данных, затем получить измеримый план выполнения; индекс строится под условие и порядок, а не для каждой колонки.
100 минут - Глава 9PDO, репозитории и транзакционные сценарии
PDO отвечает за протокол базы, репозиторий — за сохранение модели, а транзакционная граница принадлежит целому прикладному сценарию.
105 минут
V. Доверие и безопасность
- Глава 10Идентичность, сессия и право на действие
Аутентификация устанавливает личность, сессия переносит её между запросами, а авторизация заново решает право на конкретный объект и действие.
110 минут - Глава 11Безопасность по маршруту данных
Вместо списка страшных сокращений проследите данные от источника до опасной операции и примените контроль в правильном контексте.
120 минут
VI. Браузер как приложение
- Глава 12HTML и CSS: интерфейс, который работает до JavaScript
Сначала создайте понятный документ и рабочую форму, затем улучшайте поведение: JavaScript не должен быть единственным способом добраться до основного действия.
95 минут - Глава 13JavaScript-модули, DOM и локальное состояние
Модуль получает зависимости через import, владеет небольшим состоянием и обновляет только тот участок DOM, контракт которого он понимает.
100 минут - Глава 14Fetch и JSON API как согласованный контракт
Клиент и сервер заранее договариваются о методе, схеме JSON, статусах и повторе; fetch лишь переносит этот контракт через сеть.
100 минут
VII. Инженерная устойчивость
- Глава 15Архитектура, Composer и вертикальные сценарии
Структура проекта должна показывать, где живёт предметное правило, где адаптер и где собираются зависимости; Composer делает эту структуру воспроизводимой.
105 минут - Глава 16Тестирование и диагностика по границам риска
Тест выбирается по риску: правило проверяется быстро и изолированно, SQL — на реальном драйвере, а критический пользовательский маршрут — через браузер.
110 минут - Глава 17Производительность и наблюдаемость без гадания
Оптимизация начинается с измеряемого пользовательского симптома и заканчивается повторным измерением на репрезентативных данных.
90 минут
VIII. Выпуск проекта
Источники актуализации
- php.nethttps://www.php.net/supported-versions.phpПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- php.nethttps://www.php.net/releases/8.5/en.phpПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- php.nethttps://www.php.net/manual/en/migration85.phpПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- dev.mysql.comhttps://dev.mysql.com/doc/refman/8.4/en/Первичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- developer.mozilla.orghttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/ModulesПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- developer.mozilla.orghttps://developer.mozilla.org/en-US/docs/Web/API/Fetch_APIПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- getcomposer.orghttps://getcomposer.org/doc/01-basic-usage.mdПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- cheatsheetseries.owasp.orghttps://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.htmlПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
Содержательная проверка: . Автор-разработчик Михаил Каржин.