/** * <p>Entfernt ein Entity aus der Collection.</p> * @param Dkplus_Model_Domain_Entity_IEntity|int $mEntity * @return Dkplus_Model_Domain_Collection_CollectionAbstract */ protected function _removeEntity($mEntity) { //Suchen des Indexes, wenn eine Instance gegeben wurde. if ($mEntity instanceof Dkplus_Model_Domain_Entity_IEntity) { for ($i = 0; $i < count($this->_aEntities); ++$i) { if ($mEntity->equals($this->_aEntities[$i])) { $mEntity = $i; break; } } } //Index nicht gefunden oder kein Integer übergeben. if (!is_int($mEntity)) { throw new Dkplus_Model_Exception(sprintf('First parameter has an invalid type "%s", must be an ' . 'integer or an instance of ' . 'Dkplus_Model_Domain_Entity_IEntity that is already ' . 'in the collection.', getType($iOffset))); } //Falscher Index übergeben. if (!isset($this->_aEntities[$mEntity])) { throw new Dkplus_Model_Exception('There is no Entity with offset ' . $mEntity . '.'); } //Soll die Entfernung gemeldet werden? if ($this->_bIsChangeMarked) { $this->_aRemovedEntities[] = $this->_aEntities[$mEntity]; } //Entfernen und neu-ordnen. unset($this->_aEntities[$mEntity]); $this->_aEntities = array_values($this->_aEntities); return $this; }