Обучение
Курс Backend PHP разработки
Глубокое погружение в мир Backend-разработки на PHP. От основ языка и работы с памятью до продвинутых архитектурных паттернов, баз данных и CI/CD. Курс создан практикующими разработчиками MediaTen для тех, кто хочет выйти на новый профессиональный уровень.
PHP
Основы языка, типы данных, работа с памятью, OPcache, FFI и асинхронность
PHP & NGINX+FPM: Первая глава. История, которую ты должен знать!
Почему PHP жив и процветает? В этом видео мы пройдем путь от первого релиза PHP до его современного состояния, узнаем о...
PHP — Типы данных и типизация
Короткий, но ёмкий разбор типов данных в PHP: от примитивов до enum и итераторов, динамическая и строгая типизация, рабо...
Память в PHP: как работают zval, хэш-таблицы и GC
Разбор нюансов работы с памятью в PHP (PHP 8.2): zval, хэш‑таблицы, COW, массивы vs объекты, когда происходят копировани...
PHP — Как работает сборщик мусора (GC), циклические ссылки и weak-ссылки
Короткий и практичный разбор работы сборщика мусора в PHP: почему возникают утечки памяти, как выявлять и устранять цикл...
OPcache & FFI: ускоряем PHP, предзагрузка и вызов C-библиотек
В этом уроке подробно смотрим, как OPcache/APC кеширует байт‑код PHP, зачем нужна предзагрузка (preloading) и какие наст...
PHP — Генераторы: yield, корутины и обработка больших данных
Короткий практический разбор генераторов в PHP: как работает yield, почему генераторы экономят память, примеры чтения бо...
PHP — Нюансы оформления кода: PSR, читаемость и практики в продакшне
Короткий практический разбор правил оформления PHP‑кода: от PSR‑стандартов и соглашений именования до антипаттернов, тип...
Корутины в PHP: генераторы, файберы и Event Loop
В этом уроке разбираем, как в PHP реализуется кооперативная многозадачность. Начинаем с генераторов и их ограничений, за...
Асинхронность в PHP: блокировки, Event Loop и реальные инструменты
Асинхронность в PHP часто путают с «магией Event Loop». В этом видео показано, где PHP действительно блокируется, почему...
ООП
Принципы ООП, исключения, отношения между классами, наследование
PHP — Reflection API: автоподстановка, тесты и основы ООП
Короткий практический разбор Reflection в PHP: инспекция классов, свойств, методов, автоподстановка параметров и запуск...
PHP — Поздняя статика, статические свойства и архитектурные нюансы
Короткий практический разбор важных, но тонких моментов PHP: позднее статическое связывание (static vs self), использова...
PHP — Исключения: грамотная обработка, иерархия и практики
Короткий практический разбор работы с исключениями в PHP: когда использовать throw, как правильно строить иерархию исклю...
PHP — Отношения между классами: наследование, композиция, агрегация и ассоциация
Разбор сущностей и связей в ООП: чем отличаются наследование, реализация интерфейсов, ассоциация, агрегация и композиция...
PHP — Когда наследование вредит: LSP, абстракции, трейты и альтернативы
Разбираем, почему наследование часто приносит больше проблем, чем пользы: ограничения кратковременной памяти разработчик...
Архитектура
SOLID, паттерны проектирования, DDD, IoC/DI, MVC и чистая архитектура
PHP — Приоритет методов при наследовании, трейты и принципы IoC/DI
Разбираем порядок приоритетов при наследовании и повторном использовании кода через трейты: как решать конфликты методов...
Архитектура кода: как проектировать надежные и масштабируемые системы
Разбираем, что такое архитектура ПО, зачем она нужна и как её правильно применять в проектах разного размера. Поговорим...
Как устроены фреймворки: жизненный цикл приложения и создание простого фреймворка (PSR)
Разбираем жизненный цикл веб‑приложения и устройство фреймворков: от входящего request до response. Показываем типовую с...
MVC: что это, почему важно и как правильно разделять модель, вид и контроллер
Погружаемся в историю и суть паттерна MVC: от появления в Xerox PARC до практических ошибок при его применении. Разбирае...
UseCase: куда класть бизнес‑логику, как строить кейсы и хэндлеры правильно
Обсуждаем практический подход к размещению бизнес‑логики через UseCase (ю‑кейсы). Разберём: зачем нужны кейсы, как отдел...
SOLID: основные принципы для чистой и расширяемой ООП‑архитектуры
Разбираем пять принципов SOLID: Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation и Depende...
DDD: предметная область, единый язык и ограниченные контексты
В этом уроке разбираем Domain-Driven Design как подход к проектированию сложных систем. Поговорим о том, зачем нужен еди...
DDD: объекты значения, сущности и агрегаты
Продолжаем разбор Domain-Driven Design и переходим к тактическим шаблонам. В уроке подробно разбираем объекты значения,...
Паттерны проектирования: порождающие решения и фабрики
В этом уроке разбираем паттерны проектирования как язык общения и инструмент принятия архитектурных решений. Обсуждаем и...
Паттерны проектирования: структурные решения и прокси
Продолжаем разбор паттернов проектирования и переходим к структурным решениям из книги Design Patterns. В уроке рассматр...
Паттерны проектирования: поведенческие шаблоны и взаимодействие объектов
В этом уроке завершаем обзор паттернов проектирования и переходим к поведенческим шаблонам из книги Design Patterns. Раз...
DTO и Value Object: в чём разница и где что применять
DTO и Value Object часто путают, хотя задачи у них разные. В этом видео показано, зачем нужен DTO, какие требования к не...
Coupling и Cohesion: связанность, ответственность и границы кода
В этом видео разбираются базовые архитектурные принципы, влияющие на читаемость, тестируемость и эволюцию кода: coupling...
Базы данных
SQL, индексы, транзакции, репликация, шардирование и оптимизация
EAV: модель гибких атрибутов — когда применять, плюсы и ловушки
Разбираем модель данных Entity‑Attribute‑Value: зачем нужна для динамических характеристик (товары, профили и т.д.), как...
SQL JOIN: left, right, inner, full, cross и self — простые объяснения и примеры
Разбираем все основные типы соединений в SQL: RIGHT JOIN, LEFT JOIN, FULL OUTER JOIN, INNER JOIN, CROSS JOIN и SELF JOIN...
Нормальные формы: как проектировать БД без избыточности и аномалий
Разбираем процесс нормализации баз данных: от 1NF до 6NF и BCNF. Поясняем, зачем нужен переход по нормальным формам, как...
Денормализация данных
В этом уроке подробно разбираем, что такое денормализация данных, зачем и когда её применять, какие выигрыши и риски она...
Хранимые процедуры: возможности, ограничения и производительность
В этом уроке разбираем хранимые процедуры как инструмент работы с базами данных. Обсуждаем, как процедуры создаются и вы...
Представления в базах данных: обычные и материализованные
В этом уроке разбираем представления в SQL как инструмент абстракции и оптимизации работы с данными. Поговорим о том, че...
Оконные функции: аналитика и расчёты в SQL
В этом уроке разбираем оконные функции в SQL и их отличие от классических агрегатных запросов. Пошагово объясняем синтак...
Триггеры в SQL: автоматизация, события и ограничения
Триггеры позволяют базе данных реагировать на изменения данных без участия приложения. В ролике показано, как и когда тр...
Уровни изоляции транзакций: аномалии, блокировки и реальное поведение БД
Транзакции — основа целостности данных, но их поведение напрямую зависит от уровня изоляции. В видео последовательно раз...
Движки хранения данных MySQL: возможности, риски и сценарии применения
Ролик посвящён подсистеме хранения данных в MySQL и тому, как выбор движка влияет на транзакции, надёжность, производите...
Репликация баз данных: топологии, журналы и подводные камни
Репликация — ключевой механизм масштабирования и отказоустойчивости баз данных. В этом видео последовательно раскрываетс...
Шардирование баз данных: стратегии, алгоритмы и маршрутизация
Шардирование рассматривается как архитектурный приём масштабирования баз данных за пределами возможностей одного сервера...
Типы SQL-индексов: как они работают и когда что выбирать
Индексы показаны как инструмент ускорения поиска и одновременно источник проблем при неправильном использовании. В видео...
SQL-индексы на практике и CI/CD: от EXPLAIN до деплоя
Видео объединяет две темы: практическую работу с SQL-индексами и базовые принципы CI/CD. Сначала — как выбирать тип инде...
Тестирование
TDD, типы тестов, мутационное тестирование и CI/CD пайплайны
TDD: тесты как инструмент дизайна и надёжности
Подход Test-Driven Development показан как способ проектирования кода через тесты. Разбираются причины писать тесты зара...
Мутационное тестирование: как проверить качество тестов
Мутационное тестирование рассматривается как способ проверить не код, а сами тесты. В видео показано, как искусственные...
Программа курса
О курсе
От базовых концепций языка и управления памятью до продвинутых архитектурных паттернов, работы с базами данных и методологий тестирования. Программа построена на практическом опыте разработчиков и включает реальные примеры из коммерческих проектов.
PHP
Глубокое понимание языка: работа PHP-FPM с NGINX, система типов, управление памятью через zval и хэш-таблицы, сборщик мусора, OPcache, генераторы и асинхронное программирование через корутины и файберы.
- История PHP и настройка NGINX + PHP-FPM
- Типы данных и типизация
- Управление памятью: zval, хэш-таблицы, Copy-on-Write
- Сборщик мусора и weak-ссылки
- OPcache, предзагрузка и FFI
- Генераторы и yield
- PSR-стандарты
- Корутины и Event Loop
- Асинхронность и Promises
ООП
Принципы объектно-ориентированного программирования: от инкапсуляции и полиморфизма до Reflection API, правильного построения иерархий классов и использования композиции вместо наследования.
- Reflection API и автоподстановка зависимостей
- Позднее статическое связывание
- Исключения: иерархия и обработка
- Наследование, композиция, агрегация
- Принцип подстановки Лисков
Архитектура
Проектирование надёжных систем: принципы SOLID, паттерны GoF, Domain-Driven Design, организация бизнес-логики через UseCase и метрики качества кода — coupling и cohesion.
- IoC и внедрение зависимостей
- Жизненный цикл приложения и фреймворки
- Паттерн MVC
- UseCase и бизнес-логика
- SOLID
- Domain-Driven Design
- Порождающие, структурные и поведенческие паттерны
- DTO и Value Object
- Coupling и Cohesion
Базы данных
Работа с реляционными БД: проектирование схемы, эффективные запросы, масштабирование через репликацию и шардирование, оптимизация через индексы и уровни изоляции транзакций.
- Модель EAV
- SQL JOIN
- Нормальные формы и денормализация
- Хранимые процедуры и представления
- Оконные функции и триггеры
- Уровни изоляции транзакций
- Движки MySQL
- Репликация и шардирование
- Индексы и EXPLAIN
Тестирование
Методологии тестирования: Test-Driven Development как инструмент проектирования, пирамида тестирования и оценка качества тестов через мутационное тестирование.
- TDD с примерами на PHPUnit
- Мутационное тестирование
Частые вопросы
Хотите узнать больше?
Подпишитесь на наши каналы, чтобы не пропустить новые уроки и материалы по PHP-разработке.

