Hello Hector, > Is there a reason you don't want to go with a static identity map?
Well, I consider usage of static map in this case most simple and even correct. But as I'm in the planning phase and always questioning the design, I want to make sure I'm doing it the correct way. And after reading many posts on this topic recently from people I consider much more experienced (among others mainly Matthew's), it looks like trying to avoid the static registry usage may be worth the energy. Perhaps even if I am unable to clearly see the reasons (other than testing)... Thanks. M. Some notes here: http://misko.hevery.com/code-reviewers-guide/ On Mon, Aug 31, 2009 at 6:34 AM, Hector Virgen <djvir...@gmail.com> wrote: > > Marian, > A static identity map is the way to go. Page 291 of Php objects, patterns, > and practice by Matt Zandstra demonstrates how to build a simple but > effective identity map. Is there a reason you don't want to go with a static > identity map? > -- > Hector > > > On Sun, Aug 30, 2009 at 10:32 AM, Marian Meres <marian.me...@gmail.com> wrote: >> >> Hello Benjamin, >> >> thank you... but either I can't follow, or I must not have described >> properly the question. Because I do not understand how the factory could >> help you to share the map, unless you do not share the factory then... >> >> Example: >> >> class MapperFactory >> { >> protected $_identityMap; >> public function create($name) >> { >> $mapperClass = $this->_somePrefix . $name; >> $mapper = new $mapperClass(); >> $mapper->setIdentityMap($this->getIdentityMap($name)); >> return $mapper; >> } >> } >> >> // somewhere in log on (user service) >> $mapperFactory = new MapperFactory(); >> $userMapper = $mapperFactory->create('user'); >> $user = $userMapper->find(1); // find also saves the user identity. >> >> // somewhere in article model >> class Article >> { >> // lazy load author >> public function getAuthor() >> { >> if (null == $this->_author) { >> $mapperFactory = new MapperFactory(); >> $userMapper = $mapperFactory->create('user'); >> $this->_author = $userMapper->find($this->_authorId); >> } >> return $this->_author; >> } >> } >> >> My question is, how to design the whole thing so that the later model can >> reuse the identity set in the log on service (if applicable), while trying >> to avoid implementing static something somewhere. My understanding is, that >> without introducing new "domain superlayer" this could hardly be done, but >> is it worth it then? Why just not live with the static, with proper >> resetings (I know the test issues). >> >> Zend_Application is nice example where it works well (the good, non static >> container), but is this approach applicable to pure domain classes, where >> there is no front controller to pull the container from? >> >> Thank you again. >> >> And, BTW, respect for the Zend_Entity work! Very inspiring. >> >> Regards, >> M. >> >> >> On Sun, Aug 30, 2009 at 5:17 PM, Benjamin Eberlei<kont...@beberlei.de> wrote: >> > hello, >> > >> > If you dont instantiate your mappers through a factory you probably will >> > have >> > lots of work to do if you dont make access to the identity map global via a >> > static method. >> > >> > greetings, >> > Benjamin >> > >> > On Sunday 30 August 2009 04:58:32 pm Marian Meres wrote: >> >> Hi All, >> >> >> >> I have many domain models where each has its own data mapper. These >> >> mappers are spread across many places as a) services use mappers, b) >> >> mapper x uses mapper y, c) and even models use mappers (only in the >> >> case of lazy loading). >> >> >> >> I want mappers to utilize the identity map pattern (which is itself >> >> pretty straightforward). I guess the whole pattern makes more sense >> >> when used as a shared map across the mappers rather than for each to >> >> have its own. >> >> >> >> Since the mappers usage (and instantiation) is wide spread (at least >> >> in my case), the only solution I could think of is always a sort of a >> >> static one (either through static members, or static "managers", or >> >> even some injectable containers which default to static >> >> Zend_Registry). >> >> >> >> What would you suggest, other than the static way? >> >> >> >> Thank you in advance. >> >> >> >> M. >> > >> > >> > -- >> > Benjamin Eberlei >> > http://www.beberlei.de >> > >> >