Агрегаты в Domain-Driven Design часто понимают неправильно. Разработчик видит таблицы orders, order_items, products, users, переносит эти связи в объектную модель один к одному и считает, что теперь у…
Тестируемость
Архитектура программного обеспечения – принципы, методы и стили
Разработка правильной архитектуры для решения проблемы – это скорее искусство, чем наука, потому что это во многом зависит от понимания постановки проблемы, контекста и того, где, по нашему…
Руководство для начинающих по unit тестам
Что такое модульный тест Модульный тест – это категория тестов с самой высокой степенью детализации, основанная на тестовой пирамиде. Обычно он ориентирован на функциональность класса, функции или компонента пользовательского интерфейса…
Советы по тестированию исключений PHP
Давайте посмотрим на такой совершенно простой пример, как этот: Начиная с PHPunit 9.0 и далее аннотация expectedException была признана устаревшей и удалена. Теперь мы можем сосредоточиться на существующих решениях….
Тестирование API Laravel с использованием PHPUnit
TL;DR: из этого туториала вы узнаете, как построить и протестировать различные конечные точки RESTful API, созданного с помощью Laravel. Наш подход к достижению этой цели будет включать:: Настройка среды тестирования…
Новый метод sole() в laravel 8.x
С последним выпуском minor Laravel, то есть v8.23.0, в построителе запросов Laravel был введен действительно интересный метод для ситуации, когда вы хотите получить единственную запись для соответствующих критериев. Но если…
Laravel и шаблон репозитория
В этой статье я попытаюсь объяснить, как использовать шаблон репозитория в Laravel framework и почему он полезен. Давайте начнем с простого примера. Вот как выглядит типичный контроллер Laravel: В…
Замена условного оператора полиморфизмом: как убрать if/switch и не усложнить код
Условные операторы — нормальная часть программирования. if, else, switch, match сами по себе не зло. Проблема начинается тогда, когда один и тот же выбор по типу начинает расползаться…
Это не легаси – это php!
За последний год разработчики Vimeo написали бэкенд-код на множестве языков-PHP, Go, Ruby, Python, NodeJS, Java, C, C++ и немного Rust. В 2004 году мы начинали только с одного:…
Человеко понятные интервалы времени при конфигурировании вашего приложения Laravel
В каждом приложении Laravel существует много настроек, в значении которых указывается заданное кол-во секунд или минут. Например, session.lifetime или auth.password_timeout и другие. По умолчанию они все имеют какое…