Под бизнес-моделью или бизнес-объектами я подразумеваю простые старые объекты, такие как «Пользователь» со всеми их свойствами name, address, ...; в дополнение ко всем свойствам пользователя, скажем, у каждого пользователя будет объект «AppointmentBook», у каждой книги есть набор объектов «TimeSlot» и т. д.
Бизнес-модель имеет объекты со ссылками между ними, по крайней мере, так я кодирую бизнес-модель в Java.
Здесь возникает вопрос:
Чтобы инициализировать мои бизнес-объекты, в Java я бы
- получить все данные из БД только один раз во время применения
инициализация
- сопоставить данные из моей БД с моими бизнес-объектами
- хранится в памяти (карты), и они будут распределены по всем запросам.
PHP Share-Nothing-Architecture сбивает меня с толку для правильного ОО-программирования:
Если бы я использовал ту же логику, мне пришлось бы получать все объекты из БД, для каждый запрос (я знаю, что я все еще могу кешировать, но вы не кешируете всю свою БД, это не вопрос о кешировании, а скорее о способах программирования на PHP и его архитектуре).
Итак, допустим, что для одного HTTP-запроса мне просто нужны свойства пользователя, и мне не нужен доступ к его книге назначений. Было бы жалко получить все данные из БД для всех объектов, на которые ссылается Пользователь, поскольку мне просто нужны его свойства. Это означает, что я буду инициализировать объекты PHP из моей модели с большим количеством значений NULL (NULL из-за объектов, содержащихся в User, которые я не буду загружать), что в дальнейшем может привести к ошибкам.
Мне было интересно, как профессиональные PHP-разработчики обычно используют свои бизнес-объекты?
(Я с Явы)
ОБНОВЛЕНИЕ: Было бы глупо говорить, что я загружаю всю базу данных в память во время инициализации приложения в Java. Я скорее имел в виду, что если мне нужно выбрать конкретного пользователя, я мог бы просто загрузить всех его данных, и это было бы доступно через все запросы.