/** * Get metadata for a certain class - loads once and caches * @param string $className * @throws \Drest\DrestException * @return ClassMetaData $metaData */ public function getMetadataForClass($className) { if (isset($this->loadedMetadata[$className])) { return $this->loadedMetadata[$className]; } // check the cache if ($this->cache !== null) { $classMetadata = $this->cache->fetch($this->cache_prefix . $className); if ($classMetadata instanceof ClassMetaData) { if ($classMetadata->expired()) { $this->cache->delete($this->cache_prefix . $className); } else { $this->loadedMetadata[$className] = $classMetadata; return $classMetadata; } } } $classMetadata = $this->driver->loadMetadataForClass($className); if ($classMetadata !== null) { $this->loadedMetadata[$className] = $classMetadata; if ($this->cache !== null) { $this->cache->save($this->cache_prefix . $className, $classMetadata); } return $classMetadata; } if (is_null($this->loadedMetadata[$className])) { throw DrestException::unableToLoadMetaDataFromDriver(); } return $this->loadedMetadata[$className]; }