2009/9/11 Tom Graham <tom.gra...@jadu.co.uk>: > What about an aggregate metadata factory implementation, so you could pass > it multiple metadata factory instances of varying types. >
Reading the docs "There is currently a factory which does this, but it will probably be heavily rewritten, so this manual way has to suffice.", so it will change anyway :) > For example... > > class Zend_Entity_MetadataFactory_Aggregate implements > Zend_Entity_MetadataFactory_Interface > { > protected $_metadataFactories = array(); > protected $_maps; > protected $_entityNames; > > public function __construct(array $metadataFactories) > { > $this->_metadataFactories = $metadataFactories; > } > > protected function _loadDefinitions() > { > if ($this->_maps === null) { > $this->_maps = array(); > $this->_entityNames = array(); > foreach ($this->_metadataFactories as $metadataFactory) { > $this->_maps = > array_merge($metadataFactory->getDefinitionEntityNames(), $this->_maps); > } > > $this->_entityNames = array_keys($this->_maps); > } > } > > /** > * Retrieve an array of all definitions by name. > * > * @return array > */ > public function getDefinitionEntityNames() > { > $this->_loadDefinitions(); > return $this->_entityNames; > } > > /** > * Get an Entity Mapper Definition by the name of the Entity > * > * @param string $entityName > * @throws Zend_Entity_InvalidEntityException > * @return Zend_Entity_Definition_Entity > */ > public function getDefinitionByEntityName($entityName) > { > $this->_loadDefinitions(); > if(!isset($this->_maps[$entityName])) { > throw new Zend_Entity_InvalidEntityException("The entity > '".$entityName."' is unknown."); > } > return $this->_maps[$entityName]; > } > > /** > * > * @param string $visitorClass > * @return Zend_Entity_Definition_MappingVisitor[] > */ > public function transform($visitorClass) > { > // ... > } > } > > 2009/9/11 keith Pope <mute.p...@googlemail.com> >> >> 2009/9/11 keith Pope <mute.p...@googlemail.com>: >> > Hi, >> > >> > I am just having a look at Zend_Entity, I was wondering how it handles >> > object/entity instantiation, having a look through the code the >> > Zend_Db_Mapper_Loader_LoaderAbstract has a createEntity() method which >> > instantiates the entity. Is it planned that we will be able to >> > override this and provide custom instantiation code/loaders for the >> > entity manager? I am coming from the angle that it would be nice to be >> > able to inject a DI container into the manager, maybe I am thinking >> > about it wrong? >> > >> > Other than that the docs were really good and I was able to get >> > everything working very quickly, good work :) >> > >> > Thx >> > >> > Keith >> > >> >> Another bit of feedback.... >> >> When creating the Mappings from the metadata it would be nice if you >> could specifiy either multiple paths or add more than one >> Zend_Entity_MetadataFactory_Code to the create method. This way we can >> have module specific metadata and load it via a boostrap class >> resource. > > -- ---------------------------------------------------------------------- [MuTe] ----------------------------------------------------------------------