Просмотр поста #107875: Разбор ООП с Delphinum

.
Delphinum
# L!MP (03.12.2016 / 12:57)
Ну так смотри. Мы запрашиваем сущность по айди, сохраняем её в карте соответствия, затем выполняем запрос на получение той же сущности, но по другому критерию, на пример мылу.

На этапе формирования
Повторюсь, IM нужен не для уменьшения запросов в БД, а для устранения проблем, связанных с наличием в системе двух объектов, описывающих одну и ту же сущность. Как то так:
$objA = new Obj;
$objA->setId(1);
$objB = new Obj;
$objB->setId(1);

По сути $objA и $objB это один и тот же объект, но работать в системе с ними можно как с разными объектами:
$objA->setName('foo');
$objB->setName('bar');

Таким образом появляется конфликт данных. Что будет записано в базу? Зависит только от того, какой объект будет сохранен последним. Такого быть не должно.

Эту проблему и решает IM, но на деле за этим не сложно следить и самому программисту.

Реализация простая, поиск по id выполняется по IM, а по всему остальному сразу обращение в базу, а результат уже в цикле перебирается и по id заменяется из IM.