private function setQName($name)
{
if (empty($name)) {
throw new \UnexpectedValueException('Invalid QName: QName is empty.');
} elseif (isset(self::$_cache[$name])) {
$this->_prefix = self::$_cache[$name][0];
$this->_localName = self::$_cache[$name][1];
return;
} elseif (FALSE !== ($position = strpos($name, ':'))) {
list($prefix, $localName) = explode(':', $name, 2);
$this->isNCName($prefix, 0, $name);
$this->isNCName($name, $position + 1);
$this->_prefix = $prefix;
$this->_localName = $localName;
} else {
$this->isNCName($name);
$this->_localName = $name;
}
if (count(self::$_cache) > self::$cacheLimit) {
array_splice(self::$_cache, 0, self::$cacheLimit / 2);
}
self::$_cache[$name] = [$this->_prefix, $this->_localName];
}