diff options
Diffstat (limited to 'vendor/phpdocumentor/reflection-common/src/Fqsen.php')
-rw-r--r-- | vendor/phpdocumentor/reflection-common/src/Fqsen.php | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/vendor/phpdocumentor/reflection-common/src/Fqsen.php b/vendor/phpdocumentor/reflection-common/src/Fqsen.php new file mode 100644 index 0000000..ce88d03 --- /dev/null +++ b/vendor/phpdocumentor/reflection-common/src/Fqsen.php @@ -0,0 +1,82 @@ +<?php +/** + * phpDocumentor + * + * PHP Version 5.5 + * + * @copyright 2010-2015 Mike van Riel / Naenius (http://www.naenius.com) + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +/** + * Value Object for Fqsen. + * + * @link https://github.com/phpDocumentor/fig-standards/blob/master/proposed/phpdoc-meta.md + */ +final class Fqsen +{ + /** + * @var string full quallified class name + */ + private $fqsen; + + /** + * @var string name of the element without path. + */ + private $name; + + /** + * Initializes the object. + * + * @param string $fqsen + * + * @throws \InvalidArgumentException when $fqsen is not matching the format. + */ + public function __construct($fqsen) + { + $matches = array(); + $result = preg_match( + '/^\\\\([a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff\\\\]*)?(?:[:]{2}\\$?([a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*))?(?:\\(\\))?$/', + $fqsen, + $matches + ); + + if ($result === 0) { + throw new \InvalidArgumentException( + sprintf('"%s" is not a valid Fqsen.', $fqsen) + ); + } + + $this->fqsen = $fqsen; + + if (isset($matches[2])) { + $this->name = $matches[2]; + } else { + $matches = explode('\\', $fqsen); + $this->name = trim(end($matches), '()'); + } + } + + /** + * converts this class to string. + * + * @return string + */ + public function __toString() + { + return $this->fqsen; + } + + /** + * Returns the name of the element without path. + * + * @return string + */ + public function getName() + { + return $this->name; + } +} |