summaryrefslogtreecommitdiff
path: root/vendor/sebastian/type/src/TypeName.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/sebastian/type/src/TypeName.php')
-rw-r--r--vendor/sebastian/type/src/TypeName.php113
1 files changed, 113 insertions, 0 deletions
diff --git a/vendor/sebastian/type/src/TypeName.php b/vendor/sebastian/type/src/TypeName.php
new file mode 100644
index 000000000..b076e89e0
--- /dev/null
+++ b/vendor/sebastian/type/src/TypeName.php
@@ -0,0 +1,113 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/type.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Type;
+
+use function array_pop;
+use function explode;
+use function implode;
+use function substr;
+use ReflectionClass;
+
+final class TypeName
+{
+ /**
+ * @var ?string
+ */
+ private $namespaceName;
+
+ /**
+ * @var string
+ */
+ private $simpleName;
+
+ public static function fromQualifiedName(string $fullClassName): self
+ {
+ if ($fullClassName[0] === '\\') {
+ $fullClassName = substr($fullClassName, 1);
+ }
+
+ $classNameParts = explode('\\', $fullClassName);
+
+ $simpleName = array_pop($classNameParts);
+ $namespaceName = implode('\\', $classNameParts);
+
+ return new self($namespaceName, $simpleName);
+ }
+
+ public static function fromReflection(ReflectionClass $type): self
+ {
+ return new self(
+ $type->getNamespaceName(),
+ $type->getShortName()
+ );
+ }
+
+ public function __construct(?string $namespaceName, string $simpleName)
+ {
+ if ($namespaceName === '') {
+ $namespaceName = null;
+ }
+
+ $this->namespaceName = $namespaceName;
+ $this->simpleName = $simpleName;
+ }
+
+ public function namespaceName(): ?string
+ {
+ return $this->namespaceName;
+ }
+
+ public function simpleName(): string
+ {
+ return $this->simpleName;
+ }
+
+ public function qualifiedName(): string
+ {
+ return $this->namespaceName === null
+ ? $this->simpleName
+ : $this->namespaceName . '\\' . $this->simpleName;
+ }
+
+ /**
+ * @deprecated Use namespaceName() instead
+ *
+ * @codeCoverageIgnore
+ */
+ public function getNamespaceName(): ?string
+ {
+ return $this->namespaceName();
+ }
+
+ /**
+ * @deprecated Use simpleName() instead
+ *
+ * @codeCoverageIgnore
+ */
+ public function getSimpleName(): string
+ {
+ return $this->simpleName();
+ }
+
+ /**
+ * @deprecated Use qualifiedName() instead
+ *
+ * @codeCoverageIgnore
+ */
+ public function getQualifiedName(): string
+ {
+ return $this->qualifiedName();
+ }
+
+ public function isNamespaced(): bool
+ {
+ return $this->namespaceName !== null;
+ }
+}