BossBey File Manager
PHP:
7.4.33
OS:
Linux
User:
root
Root
/
opt
/
cpanel
/
ea-wappspector
/
vendor
/
rector
/
rector
/
src
/
PHPStanStaticTypeMapper
/
TypeMapper
📤 Upload
📝 New File
📁 New Folder
Close
Editing: ConditionalTypeMapper.php
<?php declare (strict_types=1); namespace Rector\PHPStanStaticTypeMapper\TypeMapper; use RectorPrefix202411\Nette\Utils\Strings; use PhpParser\Node; use PHPStan\PhpDocParser\Ast\Type\TypeNode; use PHPStan\Reflection\ClassReflection; use PHPStan\Type\ConditionalType; use PHPStan\Type\ObjectType; use PHPStan\Type\Type; use PHPStan\Type\TypeCombinator; use PHPStan\Type\TypeTraverser; use Rector\PHPStanStaticTypeMapper\Contract\TypeMapperInterface; use Rector\PHPStanStaticTypeMapper\Enum\TypeKind; use Rector\PHPStanStaticTypeMapper\PHPStanStaticTypeMapper; /** * @implements TypeMapperInterface<ConditionalType> */ final class ConditionalTypeMapper implements TypeMapperInterface { /** * @var \Rector\PHPStanStaticTypeMapper\PHPStanStaticTypeMapper */ private $phpStanStaticTypeMapper; public function autowire(PHPStanStaticTypeMapper $phpStanStaticTypeMapper) : void { $this->phpStanStaticTypeMapper = $phpStanStaticTypeMapper; } public function getNodeClass() : string { return ConditionalType::class; } /** * @param ConditionalType $type */ public function mapToPHPStanPhpDocTypeNode(Type $type) : TypeNode { $type = TypeTraverser::map($type, static function (Type $type, callable $traverse) : Type { if ($type instanceof ObjectType && !$type->getClassReflection() instanceof ClassReflection) { $newClassName = (string) Strings::after($type->getClassName(), '\\', -1); return $traverse(new ObjectType($newClassName)); } return $traverse($type); }); return $type->toPhpDocNode(); } /** * @param ConditionalType $type * @param TypeKind::* $typeKind */ public function mapToPhpParserNode(Type $type, string $typeKind) : ?Node { $type = TypeCombinator::union($type->getIf(), $type->getElse()); return $this->phpStanStaticTypeMapper->mapToPhpParserNode($type, $typeKind); } }
Save
Cancel