PHP
Основы языка, работа с БД, простой API
Уровень: Начальный · около 17 ч · после курса: Соберёшь REST API на чистом PHP: PDO, роутер, сессии, PSR-логирование, тесты на PHPUnit
Чему научишься
- Написать REST API на чистом PHP: роутер, валидация, статус-коды
- Работать с базой через PDO и подготовленные запросы
- Использовать PSR-7/PSR-15 middleware и PSR-3 логирование
- Внедрять зависимости через контейнер вместо global
- Покрыть код тестами на PHPUnit
- Применять ООП-паттерны: Repository, Factory, Service
- Понимать разницу php-fpm и CLI, настраивать .env и opcache
- Прочитать чужой код на Symfony и понять, что там происходит
Уроки курса (26)
Модуль 1 · Старт и синтаксис
Установка PHP, типы данных, условия, массивы, функции и рекурсия
- Установка, запуск и встроенный сервер - Ставим PHP нужной версии, проверяем php -v и запускаем первый скрипт
- Переменные, типы и строки - Данные в PHP: где живут числа, строки, почему всё иногда 'строка' и как с этим жить
- Условия и сравнение: == vs === - Если, иначе и почему двойное равно может подставить
- Циклы и массивы (включая ассоциативные) - Списки, словари и повторение без нытья
- Функции и include/require - Дробим код на кусочки и подключаем файлы как взрослые
- Рекурсия - Рекурсивные функции, базовый случай, стек вызовов, замыкания с &$self, встроенные рекурсивные инструменты PHP
Модуль 2 · Веб и данные
Формы, JSON, PDO, ошибки, мини-роутер и первый проект-API
- Формы и запросы (GET/POST) - Как принять данные от пользователя и не схватить багов
- Ошибки и исключения (try/catch) - Падаем красиво: ошибки, исключения и что с ними делать
- JSON в PHP - json_encode и json_decode: обмен данными с фронтом и внешними API
- PDO и безопасная работа с БД - SQL-инъекции - нет, prepared statements - да
- Мини-роутер без фреймворка - Собираем простой роутинг своими руками (и не стыдимся)
- Тестирование: база PHPUnit - Проверяем код, чтобы завтра не было стыдно
- Мини-проект: API «Список задач» - Собираем маленькое API: задачи, статусы и немного дисциплины
Модуль 3 · ООП и инфраструктура
Классы, наследование, namespaces, PSR, Composer и DI
- Классы и объекты: visibility, конструкторы, статика - От ассоциативных массивов к классам: свойства, методы, конструктор
- Наследование, abstract и интерфейсы - Когда extends - спасение, а когда - выстрел в ногу
- Traits, late static binding и magic-методы - Кусочки поведения для классов, к которым не подходит наследование
- Магические методы: полный разбор - Жизненный цикл объекта, перегрузка свойств и методов, __invoke, __clone, сериализация и цена магии
- Namespaces, Composer и autoload (PSR-4) - Как структурировать большой проект и не утонуть в include'ах
- PSR-стандарты: PSR-3, PSR-7, PSR-15 - Контракты, на которых стоит весь современный PHP
- DI и сервисный контейнер - От global $pdo к контейнеру и autowiring
Модуль 4 · Безопасность и сессии
Аутентификация, защита от CSRF/XSS/SQLi, REST API
- Сессии, cookies и аутентификация - Сессии и куки: логин, разлогин и типичные дыры в безопасности
- Безопасность: CSRF, XSS, SQLi, open redirect - OWASP Top-10 минимум, который знают все
- REST API: маршрутизация, валидация, статус-коды - Полный REST-эндпоинт без фреймворка, на голом PHP
Модуль 5 · Production и Symfony
PHP-FPM, логирование Monolog, знакомство с Symfony
- PHP-FPM vs CLI, .env, opcache - Как PHP реально работает в проде и что у него под капотом
- Логирование: PSR-3, Monolog, обработка ошибок в проде - Логи как нервная система приложения - без них ты слепой
- Знакомство с Symfony: компоненты, kernel, controllers - Главный PHP-фреймворк - почему его выбирают и как он устроен