Что вы построите
Вместо россыпи несвязанных примеров вы соберёте дневник тренировок: аккаунт, черновики, упражнения, подходы, импорт CSV, публикацию с контролем версии, недельную статистику и ограниченный доступ тренера. Проект усложняется вертикальными срезами, поэтому после каждой части остаётся работающий результат.
Главы соединяют синтаксис с инженерным решением. Массив рассматривается через форму данных, session — через срок жизни состояния, объект — через инвариант, PDO — через транзакционную границу, тест — через риск, который он действительно обнаруживает.
Почему это независимое руководство
Книга Matt Smith PHP Crash Course использована только как карта широты тем: основы языка, данные, HTTP-формы, сессии, объектная модель, базы и время. Порядок её 31 главы, учебные приложения, объяснения, иллюстрации, упражнения и программные листинги не воспроизводятся и не переводятся.
Композиция этого самоучителя спроектирована заново вокруг доверия к данным и жизненного цикла одного продукта. Тексты, примеры и SVG-схемы созданы специально для сервиса; точное сходство с предоставленным PDF проверяется отдельным локальным аудитом.
Что обновлено на август 2026
Основная линия — PHP 8.5: рассматриваются pipe operator, clone with, NoDiscard и новые правила совместимости, но исполняемые примеры сохраняют совместимость с PHP 8.4 WebAssembly runtime сайта. Для фреймворка различаются Symfony 8.1 stable и 7.4 LTS; для ORM — Doctrine 3.6 stable; шаблоны ориентированы на Twig 3.
Version numbers не подменяют проверку проекта. Перед реальным обновлением изучаются migration guide, deprecations, platform requirements, lock-файл, поддержка расширений и фактическая production-СУБД.
Как проходить интенсив
Читайте последовательно, если PHP для вас новый. Опытный разработчик может начать с нужной части, но лабораторные используют модель дневника и термины предыдущих глав. После каждого задания сохраните решение и один отрицательный тест.
Прогресс и заметки остаются в localStorage. Примеры PHP запускаются только локально в отдельном WebAssembly Worker, без серверного eval, shell-команд и подключения пользовательского пути через include/require.
Редакционный критерий
Материал объясняет не только допустимый синтаксис, но и условия выбора, отказ, измерение и границу ответственности. Там, где существует несколько решений, глава называет компромисс вместо выдачи предпочтения автора за универсальное правило.
Это учебный маршрут, а не замена security review, документации зависимости или плана миграции конкретной production-системы. Временные факты снабжены первичными источниками и датой проверки.
Закрепите материал
Отметка, заметка, чек-лист и ответы остаются в localStorage этого браузера и не отправляются в аналитику.
Оглавление самоучителя
I. Надёжные примитивы
- Глава 1Контракт запуска и первый диагностический срез
Программа начинается не с echo, а с договора об окружении: какая ветка PHP, какой ini, какие расширения и какой способ запуска считаются допустимыми.
65 минут - Глава 2Значения, единицы измерения и точная арифметика
Число без единицы двусмысленно: 90 может означать секунды, минуты, килограммы или процент, поэтому корректность начинается с именования и диапазона.
80 минут - Глава 3Unicode-текст, идентификаторы и контекст вывода
Текст проходит несколько разных операций: проверку кодировки, нормализацию для конкретной задачи, хранение исходного варианта и экранирование только в момент вывода.
85 минут - Глава 4Решения как таблицы правил, а не лес условий
Условие становится поддерживаемым, когда каждая ветвь отвечает на предметный вопрос и возвращает различимую причину, а не просто true или false.
75 минут - Глава 5Функциональные контракты и читаемые конвейеры PHP 8.5
Конвейер читается слева направо только тогда, когда каждый шаг мал, имеет один контракт и не прячет запись в базу или отправку сообщения.
90 минут
II. Мастерская данных
- Глава 6Массивы как списки, карты и множества
Один синтаксис array скрывает несколько структур данных; ошибки начинаются, когда список незаметно превращается в карту или ключи теряют предметный смысл.
85 минут - Глава 7Итерации, генераторы и ограниченная память
Цикл считается корректным, когда понятны источник, условие завершения, форма каждого элемента и максимальный объём состояния между итерациями.
90 минут - Глава 8Файлы, потоки и безопасный импорт CSV
Загруженный файл — недоверенный поток байтов, а не PHP-модуль и не готовая таблица: путь, размер, кодировка и каждая строка требуют отдельного решения.
105 минут
III. Веб-граница
- Глава 9HTTP-запрос как недоверенное сообщение
Контроллер переводит конкретное HTTP-сообщение в типизированную команду, но не объявляет поле безопасным только потому, что его отправила ваша форма.
95 минут - Глава 10Формы, карта ошибок и Post/Redirect/Get
Хорошая форма не просто отклоняет запрос: она сохраняет допустимый ввод, показывает точную причину рядом с полем и не повторяет изменение при обновлении страницы.
110 минут - Глава 11Сессионное состояние, черновики и идемпотентность
Сессия хранит короткий контекст взаимодействия, но долговечная тренировка и её правила принадлежат базе; случайный cookie только связывает запрос с серверным состоянием.
100 минут - Глава 12Идентичность, пароль и право на конкретный объект
Успешный вход устанавливает личность, но не разрешает автоматически читать любую тренировку: право проверяется заново для выбранного объекта и действия.
115 минут
IV. Объектный дизайн
- Глава 13Value objects, readonly и конечные состояния
Объект полезен, когда делает недопустимое состояние трудным для создания; оболочка с геттерами без правила только увеличивает число файлов.
105 минут - Глава 14Композиция, интерфейсы и осторожное наследование
Связь has-a обычно меняется легче, чем is-a: объект получает нужное поведение через маленький контракт, а не наследует случайные методы предка.
100 минут - Глава 15Composer, PSR-4 и безопасная граница Twig
Composer управляет воспроизводимостью и автозагрузкой, а шаблонизатор оформляет уже подготовленную модель представления, не принимая предметные решения.
115 минут - Глава 16Исключения, структурные логи и управляемое время
Пользователь получает безопасный исход, оператор — достаточный контекст, а тест — контролируемые часы; одно исключение не должно печататься тремя несовместимыми способами.
105 минут
V. Хранение и время
- Глава 17Реляционная модель, PDO и транзакционная граница
Схема защищает факты независимо от маршрута записи, PDO отделяет значения от SQL, а транзакция охватывает целый прикладной исход.
125 минут - Глава 18CRUD, repository и честная граница ORM
CRUD-кнопка не определяет архитектуру: сценарий выражает намерение, repository скрывает способ хранения, а ORM выбирают после оценки модели и запросов.
125 минут - Глава 19Время, часовые пояса и повторяемые расписания
Момент времени и настенные часы — разные данные: встреча в 18:00 по Москве несёт timezone, а факт публикации хранится как однозначный instant.
110 минут
VI. Качество и выпуск
- Глава 20Тестовая пирамида, статический анализ и deprecations
Тест защищает контракт и отрицательный сценарий; количество assertions не заменяет проверку границ, конкурентного изменения и реальной базы.
120 минут - Глава 21Угрозы, производительность и наблюдаемое поведение
Безопасность определяет, что не должно произойти; наблюдаемость показывает, что происходит; производительность улучшается после измерения конкретного узкого места.
125 минут - Глава 22Выбор фреймворка и управляемый релиз проекта
Фреймворк ускоряет повторяющуюся инфраструктуру, но проект остаётся ответственным за предметные границы, данные, угрозы, тесты и откат.
140 минут
Источники актуализации
- php.nethttps://www.php.net/supported-versions.phpПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- php.nethttps://www.php.net/releases/8.5/en.phpПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- getcomposer.orghttps://getcomposer.org/doc/03-cli.mdПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- symfony.comhttps://symfony.com/releasesПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- twig.symfony.comhttps://twig.symfony.com/doc/3.x/Первичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- doctrine-project.orghttps://www.doctrine-project.org/projects/ormПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- dev.mysql.comhttps://dev.mysql.com/doc/refman/8.4/en/Первичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- cheatsheetseries.owasp.orghttps://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.htmlПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
Содержательная проверка: . Автор-разработчик Михаил Каржин.