3v4l.org

run code in 300+ PHP versions simultaneously
<?php namespace SomethingElse; class Test{} class Test2{} namespace MyApp\Example; use ReflectionClass; use ReflectionProperty; use SomethingElse\Test; use SomethingElse\Test2 as Alias; class ClassWithTypeHintedProperties { /** @var Test */ public $test; /** @var Alias */ public $alias; } $c = new ClassWithTypeHintedProperties(); $reflection = new ReflectionClass($c); $declared = get_declared_classes(); $usedWithNamespace = []; foreach ($declared as $class) { if (strstr($class, '\\')) { $usedWithNamespace[] = $class; } } var_dump($usedWithNamespace); foreach($reflection->getProperties(ReflectionProperty::IS_PUBLIC) as $p) { $comment = $p->getDocComment(); $comment = str_replace('/** @var', '', $comment); $comment = str_replace(' */', '', $comment); $comment = trim($comment); foreach ($usedWithNamespace as $class) { if (strstr($comment, $class)) { $comment = $class; echo $class."\n"; } } }

preferences:
53.2 ms | 402 KiB | 5 Q