diff --git a/src/BeSimple/SoapServer/Classmap.php b/src/BeSimple/SoapServer/Classmap.php new file mode 100644 index 0000000..aa1e3e9 --- /dev/null +++ b/src/BeSimple/SoapServer/Classmap.php @@ -0,0 +1,47 @@ + + * (c) Francis Besset + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +namespace BeSimple\SoapServer; + +use BeSimple\SoapCommon\Classmap as BaseClassmap; + +/** + * @author Francis Besset + */ +class Classmap extends BaseClassmap +{ + protected $classmapInversed = array(); + + /** + * {@inheritdoc} + */ + public function add($type, $classname) + { + parent::add($type, $classname); + + $this->classmapInversed[$classname] = $type; + } + + public function getByClassname($classname) + { + if (!$this->hasByClassname($classname)) { + throw new \InvalidArgumentException(sprintf('The classname "%s" was not found in %s', $classname, __CLASS__)); + } + + return $this->classmapInversed[$classname]; + } + + public function hasByClassname($classname) + { + return isset($this->classmapInversed[$classname]); + } +}