В PHP-проектах часто используют классы под конкретные сценарии приложения. Где-то их называют Action, где-то UseCase, где-то ApplicationService, где-то CommandHandler. Названия разные, но идея одна: отдельный класс описывает конкретное…
Архитектура
Исключения в PHP и Laravel: что это, зачем нужны и как применять
Исключения в PHP часто воспринимают слишком узко: как способ “поймать ошибку” через try/catch. Из-за этого в проектах появляются две крайности. Первая — исключения почти не используют. Методы возвращают…
Альтернативы Centrifugo для Laravel: Reverb, Pusher, Ably, Socket.IO, SSE и polling
Centrifugo — сильное решение для real-time систем. Особенно когда нужен отдельный WebSocket-слой, приватные каналы, публикация событий из backend-а, масштабирование и независимость от конкретного фреймворка. Но Centrifugo не единственный…
Публикация событий из Laravel в Centrifugo: Events, listeners, queue jobs и безопасный real-time payload
Real-time в Laravel-проекте не должен начинаться с прямого HTTP-запроса к Centrifugo из контроллера. Это быстрый путь к связанному коду, нестабильной архитектуре и ошибкам синхронизации между frontend и backend….
Каналы и авторизация в Centrifugo: как безопасно подключить real-time в Laravel
В предыдущей статье мы разобрали архитектуру Laravel + Centrifugo: Laravel отвечает за бизнес-логику, права доступа и события, Centrifugo — за WebSocket-соединения, каналы и доставку сообщений, а frontend —…
Архитектура Laravel + Centrifugo: кто за что отвечает в real-time системе
В первой части мы разобрались, что Real-time на Laravel-сайте нужен там, где интерфейс должен получать изменения без перезагрузки страницы: новые уведомления, смену статуса заказа, сообщения в чате, обновления…
Real-time на сайте с Laravel и Centrifugo: зачем нужен WebSocket
Большинство web-приложений исторически строится вокруг простой и надёжной модели: пользователь отправляет запрос, сервер его обрабатывает и возвращает ответ. Эта схема лежит в основе классического HTTP-взаимодействия и отлично подходит…
Агрегаты в Domain-Driven Design: что это и как проектировать без ошибок
Агрегаты в Domain-Driven Design часто понимают неправильно. Разработчик видит таблицы orders, order_items, products, users, переносит эти связи в объектную модель один к одному и считает, что теперь у…
Domain-Driven Design: Основы, Ключевые Понятия и Архитектурные Границы
📘 Введение Domain-Driven Design (DDD) — это не просто набор паттернов, а стратегический подход к проектированию сложных бизнес-приложений. Он помогает выстроить систему вокруг предметной области, а не технических…
Стоит ли делать валидацию прямо в Entity? Ответ изнутри DDD
Когда мы говорим о Domain-Driven Design, один из частых вопросов, которые я слышу: “А нужно ли вообще делать валидацию в Entity? Это же бизнес-логика, а не проверка форм.”…