Шаблон Identity Map

Помните этот кошмар с ошибками при передаче параметров по значению в PHP 4? Полная путаница, которая происходила, когда вы полагали, что две переменные указывают на один объект, а оказывалось, что на разные, но невероятно похожие? Ну что ж, кошмар возвращается.

Проблема шаблона Identity Map

Давайте рассмотрим тестовый код, созданный для проверки примера Data Mapper.

$venue = new woo_domain_Venue();

$venue->setNarae( «The Likey Lounge» );

$mapper-»insert( $venue );

$venue = $mapper->find( $venue->getld() );

print_r( $venue );

$venue->setName( «The Bibble Beer Likey Lounge» );

$mapper-»update( Svenue );

$venue = $mapper->find( $venue->getld() );

print_r( $venue );

Цель этого кода — продемонстрировать, что объект, который мы добавили к базе данных, мог также быть извлечен с помощью Mapper и был бы идентичным, т.е. идентичным во всех отношениях, за исключением того, что это не один и тот же объект! Я обошел эту проблему, присвоив новый объект Venue и затерев старый. К сожалению, не всегда можно в такой степени контролировать ситуацию. На один и тот же объект могут ссылаться в разные моменты времени в рамках одного запроса. Если вы изменяете один его вариант и сохраняете в базе данных, можете ли вы быть уверены, что другой вариант этого объекта (вероятно, уже сохраненный в объекте Collеction) не будет записан поверх ваших изменений?

Дубликаты объектов — это не только риск, но и непроизводительные издержки. Некоторые популярные объекты могут загружаться по три-четыре раза в процессе, и все эти, кроме одного, обращения к базе данных будут совершенно излишними. К счастью, решить эту проблему достаточно просто.

P.S. Если вам вдруг понадобиться новенький мобильный телефон, то можно обратиться в интернет магазин телефонов sony ericsson выбор здесь довольно большой.

Комментарии запрещены.