Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. Mapper.php

function Mapper::stringToCodeUnits

Throws

InvalidCodeUnitException

ReflectionException

File

vendor/sebastian/code-unit/src/Mapper.php, line 64

Class

Mapper

Namespace

SebastianBergmann\CodeUnit

Code

public function stringToCodeUnits(string $unit) : CodeUnitCollection {
    if (str_contains($unit, '::')) {
        [
            $firstPart,
            $secondPart,
        ] = explode('::', $unit);
        if ($this->isUserDefinedFunction($secondPart)) {
            return CodeUnitCollection::fromList(CodeUnit::forFunction($secondPart));
        }
        if ($this->isUserDefinedMethod($firstPart, $secondPart)) {
            return CodeUnitCollection::fromList(CodeUnit::forClassMethod($firstPart, $secondPart));
        }
        if ($this->isUserDefinedInterface($firstPart)) {
            return CodeUnitCollection::fromList(CodeUnit::forInterfaceMethod($firstPart, $secondPart));
        }
        if ($this->isUserDefinedTrait($firstPart)) {
            return CodeUnitCollection::fromList(CodeUnit::forTraitMethod($firstPart, $secondPart));
        }
    }
    else {
        if ($this->isUserDefinedClass($unit)) {
            $units = [
                CodeUnit::forClass($unit),
            ];
            foreach ($this->reflectorForClass($unit)
                ->getTraits() as $trait) {
                if (!$trait->isUserDefined()) {
                    // @codeCoverageIgnoreStart
                    continue;
                    // @codeCoverageIgnoreEnd
                }
                $units[] = CodeUnit::forTrait($trait->getName());
            }
            return CodeUnitCollection::fromList(...$units);
        }
        if ($this->isUserDefinedInterface($unit)) {
            return CodeUnitCollection::fromList(CodeUnit::forInterface($unit));
        }
        if ($this->isUserDefinedTrait($unit)) {
            return CodeUnitCollection::fromList(CodeUnit::forTrait($unit));
        }
        if ($this->isUserDefinedFunction($unit)) {
            return CodeUnitCollection::fromList(CodeUnit::forFunction($unit));
        }
    }
    throw new InvalidCodeUnitException(sprintf('"%s" is not a valid code unit', $unit));
}
RSS feed
Powered by Drupal