Объекты-значения в PHP 8: Сущности
🧱 Value Objects (Объекты Значений):
Value Objects — незаслуженно недооценные герои нашего кода, приносящие неизменяемость и предсказуемость в наши приложения. Они инкапсулируют небольшие кусочки данных, обеспечивая постоянство их состояния. Такая предсказуемость упрощает наш код и способствует общей стабильности системы.
👥 Entities (Сущности):
В отличие от Value Objects, Entities обладают уникальной идентичностью, позволяя им изменять свое состояние и сохранять свою индивидуальность. Давайте глубже погрузимся в качества, которые определяют сущность в наших PHP-приложениях.
Основные характеристики Entities включают:
1️⃣Идентичность: У Entities есть уникальный идентификатор, который является ключевым для сценариев, где важны устойчивость и изменяемость.
2️⃣Изменяемость: В отличие от Value Objects, Entities могут изменять свое состояние в течение жизненного цикла, приспосабливаясь к различным сценариям.
3️⃣Устойчивость за пределами одной транзакции: Entities сохраняются за пределами одной транзакции, обеспечивая их долговечность через взаимодействие с системой. В статье рекомендуется использование шаблона Repository для хранения и извлечения Entities.
Здесь представлен концепт Immutable Entities, достигаемый с использованием открытых только для чтения свойств и создания новых экземпляров для каждого изменения. Также рассматривается проблема управления версиями сущности, предлагая решение на основе создания хеш-строки для стабильной и сравнимой идентификации версии.
Демонстрируется интеграция Value Objects в Entities, улучшающая ясность кода и поддерживаемость. Выделены практические соображения при выборе между Value Objects и Entities в зависимости от конкретных требований системы.
Post #3979
3.02K