Ubiquitous Language и Bounded Context в DDD

Domain-Driven Design: Tackling Complexity in the Heart of Software Эванса — лучшая книга о проектировании действительно больших enterprise-приложений, что я читал. Видимо это мнение разделяют многие другие разработчики и проектировщики, потому что Entity и ValueObject, Repository и Specification встречаются почти в каждой большой кодовой базе. Но вот незадача, Ubiquitous Language (единый язык) и Bounded Context (контекст предметной области) в чужом коде я не видел ни разу. И здесь зарыта очень большая собака. Зачем нужен единый Read more

Заглушки Eloquent-отношений для быстрых тестов

Когда вы пишете тесты для модели Eloquent, зачастую нужен доступ непосредственно к базе данных, что бы проверить свой код в боевых условиях. Но иногда функциональность тестирования не зависит от особенностей базы данных. Есть ли способ тестировать данные без отправки в базу данных? Тестирование с базой данныхСкажем так, у нас есть альбомы Albums с песнями Songs и мы хотели бы протестировать расчёт общей продолжительность каждого альбома.Тест может выглядеть следующим образом: class AlbumTest extends TestCase { use DatabaseMigrations; public function test_can_calculate_total_duration() Read more

Stubbing Eloquent Relations for Faster Tests

Stubbing Eloquent Relations for Faster Tests When you’re trying to test methods on an Eloquent model, you often need to hit the database to really test your code. But sometimes the functionality you’re testing doesn’t really depend on database features. Is there any way to test that stuff without hitting the database? Testing against the database Say we had Albums with Songs and we wanted to test that we could calculate the total duration of an album. Our test Read more

AN AUTOMAPPER FOR PHP, THE POWERFUL AND SIMPLE SOLUTION FOR MAPPINGS

Did you wonder how to eliminate problems with complexity of mapping, whose are always coming back to you? It concerns a many developers, who are creating backend-layer of web applications. This applies in particular to building an APIs, using Event-Driven architecture with a lot of DTO / VO objects. If you also are using the DDD (domain-driven design) approach, you have to keep the entities inside the domain layer and do not expose them outside Read more

Run jQuery in Chrome Console

I’ve run into numerous situations where I need to loop through data on a website that I do not own (typically API documentation) so that I can reformat it and make it usable.  For example, AWS Route 53 includes a list of top-level domains (TLDs) in a page with related data for each TLD but it’s in an HTML format. You can use JavaScript by default in the chrome console but jQuery allows me to Read more

Laravel class-based Macros

Laravel Macros are a clean way to add pieces of functionality to classes you don’t own (core Laravel components) and re-use them in your projects. It was first introduced in the 4.2 version but it was only recently that I discovered the ability to define class-based macros. So, this is what this article is going to be about. Macros can be defined on any class that makes use of the Macroable trait by simply calling Read more

Какая разница между .gitkeep и .gitignore

Пустой файл .gitkeep необходим в случае если необходимо добавить в git пустую директорию (по другому просто не получится —  git это не позволяет)Причем подойдет любой файл с любым расширением. Просто .gitkeep это общепринятое соглашение о наименовании, а не git фича.Файл .gitignore позволяет задать исключения для репозитория.Его как привило размещают в корне проекта.Каждая строка этого файла должна содержать путь или маску для файлов и директорий которые следует исключить из репозитория.Эти правила однако не будут работать для Read more

Выбор PHP фреймворка: Laravel глазами Symfony разработчика

Фреймворк — это некий скелет структуры проекта, предоставляющий реализованный функционал «из коробки». Данный функционал позволяет решать наиболее типичные задачи при разработке. Архитектура фреймворка может как реализовывать некий собственный набор паттернов, так и представлять собой реализацию отдельных общеизвестных паттернов. Архитектура Laravel строится вокруг популярного в последнее время принципа Inversion of Control >> Dependency Injection >> Service Container. Этот принцип хорошо знаком разработчикам Symfony, т.к. является краеугольным камнем всей Symfony разработки. Service Container Laravel очень напоминает Symfony Read more

Заглянем под капот Doctrine 2

Пожалуй, я не совру, если скажу, что в экосистеме Symfony наиболее часто используемой ORM является Doctrine. Поэтому изучение этой библиотеки крайне важно для Symfony-разработчика. В данной статье предлагаю заглянуть «под капот» этого Мустанга в мире ORM-ок и выяснить, на базе каких абстракций и паттернов построена эта библиотека. Когда я впервые услышал о Doctrine, это была еще 1-я версия. Докладчик, которого я слушал, жаловался, какая это «бяка» и сколько головной боли она доставляла команде на проекте. Read more

Попросили проверить код, на что смотреть нужно?

Цель данных рекомендаций — снижение сложности восприятия, поддержки, тестирования и расширения кода, написанного разными авторами; она достигается путём рассмотрения серии правил и ожиданий относительно написания PHP-кода. Слова «НЕОБХОДИМО» / «ДОЛЖНО» («MUST»), «НЕДОПУСТИМО» («MUST NOT»), «ТРЕБУЕТСЯ» («REQUIRED»), «НУЖНО» («SHALL»), «НЕ ПОЗВОЛЯЕТСЯ» («SHALL NOT»), «СЛЕДУЕТ» («SHOULD»), «НЕ СЛЕДУЕТ» («SHOULD NOT»), «РЕКОМЕНДУЕТСЯ» («RECOMMENDED»), «МОЖЕТ» / «ВОЗМОЖНО» («MAY») и «НЕОБЯЗАТЕЛЬНО» («OPTIONAL») в этом документе следует понимать так, как это описано в RFC 2119 (и его переводе). 1. Оформление 1.1. Read more


Любишь мемасики?

Подпишись на мой телеграм-канал!

Открыть
Закрыть