diff vendor/phpdocumentor/reflection-common/src/Fqsen.php @ 12:7a779792577d

Update Drupal core to v8.4.5 (via Composer)
author Chris Cannam
date Fri, 23 Feb 2018 15:52:07 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/phpdocumentor/reflection-common/src/Fqsen.php	Fri Feb 23 15:52:07 2018 +0000
@@ -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;
+    }
+}