/** * @param $type * @param null $init * @return Domain|null */ public function resolveDomain($type, $init = null) { $result = null; if ($this->store->contains($type)) { /** @var Domain $class */ $class = $this->store->get($type); $result = $class::create($init); } return $result; }
public function getMetadata($class) : ObjectMetadata { if (!is_a($class, MetadataAware::class, true)) { throw new \InvalidArgumentException('Invalid class. Accepted only MetadataAware instances'); } /** @var MetadataAware|string $className */ $className = ClassHelper::getClassName($class); // Resolving the container interface if ($this->container->contains($className)) { $className = $this->container->getClass($className); } if ($this->storage->contains($className)) { $metadata = $this->storage->get($className); } else { $metadata = $this->modelAnalyzer->analyze($className); $this->storage->set($className, $metadata); } return $metadata; }