/** * Performs the actual find. * * @param ezcQuerySelect|ezcPersistentFindQuery $query * @param string $class * @return array(object($class)) */ private function performFind($query, $class = null) { $objects = $this->session->find($query, $class); $defs = array(); foreach ($objects as $i => $object) { $class = get_class($object); if (!isset($defs[$class])) { $defs[$class] = $this->session->definitionManager->fetchDefinition($class); } $state = $object->getState(); $id = $state[$defs[$class]->idProperty->propertyName]; $identity = null; if (!$this->properties['options']->refetch) { $identity = $this->properties['identityMap']->getIdentity($class, $id); } if ($identity !== null) { $objects[$i] = $identity; } else { $this->properties['identityMap']->setIdentity($object); } } return $objects; }