PHP Profi

Проектирование
О структуре/архитектуре кода, о патернах и приёмах, об ООП в PHP

ПроектированиеЧто обеспечивает interface и для чего он нужен

Создание и внедрение интерфейсов в наш код — это важно. Это помогает с подменой компонентов, облегчает тестирование, отделяет "что" от "как".

Но просто влепить интерфейс к классу и забыть — этого недостаточно.

Мы также должны подумать о том, на что мы "натянем" этот интерфейс.

 

2017-11-27 alek13

ПроектированиеСобытийные микросервисы с использованием RabbitMQ

Использование правильных шаблонов/паттернов для общения между микросервисами может помочь масштабировать ваше приложение и решить наиболее распространенные системные проблемы. Мы начали с прямых HTTP-вызовов для всех взаимодействий, но решили перейти к событийной системе. Эта система изменила наше мышление о взаимодействии между службами, навязала масштабируемые паттерны и увеличила отказоустойчивость.

Мы перешли к использованию событий вместо традиционного HTTP-взаимодействия по нескольким причинам.

2017-04-20 alek13

ПроектированиеDDD в PHP: Value Object или Объект-Значение

Определение Мартина Фаулера:

Небольшой простой объект, как деньги или диапазон дат, равенство которых не основано на идентичности

Объект-Значение (Value Object) — это объект, который представляет собой понятие из предметной области. В DDD (Domain Driven Development — разработка на основе предметной области, или предметно-ориентированное программирование) важно то, что Value Object поддерживает и обогащает Единый Язык вашей Предметной Области. Это не только примитивы, которые представляют собой некоторые значения, — они являются полноправными гражданами Предметной Области, которые формируют поведение вашего приложения.

Хорошие примеры Value Object-ов, упомянутые у Мартина, — деньги и время. При создании ГИС-приложений вы можете прийти к такому Объекту-Значению, как  Location($lat, $long), который будет инкапсулировать широту/долготу и подобное. Вопрос, который вы, вероятно, захотите задать — почему это лучше, чем просто передать два float`а в массиве и называть это $location?

Преимущества использования Value Objects

2017-04-16 alek13

ПроектированиеО различии между простыми и сложными решениями в ООП

Основы объектно-ориентированного проектирования — О различии между простыми и сложными решениями.

перевод статьи "Foundations of OO Design"

2014-12-03 irul