Транзакции обычно вспоминают в момент, когда что-то уже сломалось. На первый взгляд кажется, что проблема в плохом SQL, невнимательности или “ну кто же знал, что два запроса придут…
PHP и Backend
PHP, Symfony, Yii, Composer, серверная разработка, backend-подходы вне Laravel.
Исключения в PHP и Laravel: что это, зачем нужны и как применять
Исключения в PHP часто воспринимают слишком узко: как способ “поймать ошибку” через try/catch. Из-за этого в проектах появляются две крайности. Первая — исключения почти не используют. Методы возвращают…
Авторизация backend-запросов между микросервисами в PHP/Laravel
Введение Когда разработчики начинают строить микросервисную архитектуру, вопрос авторизации между сервисами обычно решается в стиле: Проблема в том, что микросервисы очень быстро превращают инфраструктуру в распределённую систему с…
Публикация событий из 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 —…
RESTful Web Services: Предупреждение Race Conditions
Одна из основных предпосылок веб-служб RESTful заключается в том, что HTTP следует рассматривать как протокол приложения, а не только как транспортный протокол. Он включает в себя целый набор семантики,…
Как стать свободным от фреймворков? Простые рецепты
Если вы хотите писать приложения, которые можно поддерживать в долгосрочной перспективе, вам нужно абстрагироваться от вашего фреймворка, ORM, HTTP-клиента и т. д. потому что ваше приложение переживет их всех….
Шаблон проектирования Спецификация
Паттерн “спецификация” предоставляет возможность описывать требования к бизнес-объектам, и затем использовать их (и их композиции) для фильтрации не дублируя запросы. Что такое спецификация? В Википедии этот паттерн описан так:…
DTO в PHP: как перестать передавать массивы и сделать данные понятными
Проблема DTO не относится только к Laravel. Она появляется почти в любом PHP-проекте: на Laravel, Symfony, Yii, Slim, самописном framework-free приложении или в обычном SDK. В любом фреймворке…
В чём разница между listener и subscriber
Listener — слушатель одного или более событий, некий такой атомарный исполнитель. Не знает на что он подписан, но легко управляется через конфигурацию. Если разные слушает — нужно самому логику…