if (!
class_exists(PhpDocParser::
class)) { throw new \
LogicException(sprintf('Unable to use the "%s" class as the "phpstan/phpdoc-parser" package is not installed. Try running composer require "phpstan/phpdoc-parser".', __CLASS__
));
} $this->phpStanTypeHelper =
new PhpStanTypeHelper();
$this->mutatorPrefixes =
$mutatorPrefixes ?? ReflectionExtractor::
$defaultMutatorPrefixes;
$this->accessorPrefixes =
$accessorPrefixes ?? ReflectionExtractor::
$defaultAccessorPrefixes;
$this->arrayMutatorPrefixes =
$arrayMutatorPrefixes ?? ReflectionExtractor::
$defaultArrayMutatorPrefixes;
$this->phpDocParser =
new PhpDocParser(new TypeParser(new ConstExprParser()),
new ConstExprParser());
$this->lexer =
new Lexer();
$this->nameScopeFactory =
new NameScopeFactory();
} public function getTypes(string
$class, string
$property, array
$context =
[]): ?array
{ /** @var PhpDocNode|null $docNode */
[$docNode,
$source,
$prefix,
$declaringClass] =
$this->
getDocBlock($class,
$property);
$nameScope =
$this->nameScopeFactory->
create($class,
$declaringClass);
if (null ===
$docNode) { return null;
}