/** * Returns the SchemaCurie for the given SchemaQName. * * @param SchemaQName $qname * @return SchemaCurie * * @throws NoMessageForQName */ public static function resolveQName(SchemaQName $qname) { $key = $qname->toString(); if (isset(self::$resolvedQnames[$key])) { return self::$resolvedQnames[$key]; } $qvendor = $qname->getVendor(); $qmessage = $qname->getMessage(); foreach (self::$messages as $id => $class) { list($vendor, $package, $category, $message) = explode(':', $id); if ($qvendor === $vendor && $qmessage === $message) { return self::$resolvedQnames[$key] = SchemaCurie::fromString($vendor . ':' . $package . ':' . $category . ':' . $message); } } throw new NoMessageForQName($qname); }
/** * @param SchemaQName $qname */ public function __construct(SchemaQName $qname) { $this->qname = $qname; parent::__construct(sprintf('MessageResolver is unable to resolve [%s] to a SchemaCurie.', $qname->toString())); }