- var_dump: documentation ( source)
- get_declared_classes: documentation ( source)
- strstr: documentation ( source)
- str_replace: documentation ( source)
- trim: documentation ( source)
<?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";
}
}
}