Объекты ООП значения и сущности в одном классе - PullRequest
1 голос
/ 29 июля 2010

Я реорганизую старый процедурный веб-сайт PHP в вкусное ООП-приложение с легким добавлением Domain Driven Design для дополнительного вкуса.

Я продолжаю сталкиваться со случаями, когда мне нужны классы, которые могут иметь подклассы.которые являются либо сущностями, либо объектами значений.

Например, объект url.Есть миллионы URL-адресов, и поэтому все они не могут быть сущностями.Но некоторые из них очень особенные, например, моя домашняя страница.Это сущность.

Другой пример, скажем, «объект конфигурации».Мне бы хотелось, чтобы в некоторых конфигурациях были идентификаторы, чтобы я мог создавать «пресеты» и управлять ими через онлайн-панель управления.Для тех, кто ищет их, необходимо найти их, а ORM - для управления временем их жизни.Но для других «не предустановок» (из той же иерархии классов) я хотел бы иметь возможность загружать их с данными, которые были настроены на лету и не требуют сохранения.

Я предполагаю много:

class factory { 
 reconstitute($rawdata) {
  if (raw data has identity)
   load up and return entity version of the class 
  else
   load up and return anonymous/value object version of the class

Все это кажется немного странным.

Существует ли какая-либо модель, которая обсуждает лучший способ решения этой проблемы?

1 Ответ

0 голосов
/ 29 июля 2010

Я не уверен, что полностью понимаю ваш сценарий, но ... это действительно имеет значение?По моему опыту работы с EF / ORM лучший способ (который я могу придумать) сделать то, что вы хотите сделать, - это позволить вашему классу сущности решить, загружать или сохранять себя из / в базу данных на основе определенных бизнес-правил или нет.в классе.

$url = new URLClass('KEY_DATA') // returns loaded object url if key if found in database
$url = new URLClass() // returns new url object
$url = new URLClass('', '110011000110010001000011101010010100') // returns new url with data loaded from raw data

Не уверен, действительно ли это вам поможет или даже применимо.

...