【发布时间】:2021-03-25 05:15:03
【问题描述】:
我怎样才能做到这一点?
<?php
namespace Target {
class FooBar {
}
}
namespace Test {
use Target\FooBar;
$class = 'FooBar';
var_dump(new \ReflectionClass(new $class));
}
目前它失败了,因为反射类只能找到具有完整命名空间的类。我怎样才能改变它,以便它从使用语句中提取类?如果有我缺少的功能。尝试$class::class 之类的东西也会出错。
我的全部目的是能够使用这样的数组注释:
<?php
namespace Target {
use Foo\Bar;
class FooBar {
/**
* @var Bar[]|null
*/
public ?array $foo;
}
}
也许我正在做的事情是不可能的,我应该只在注释中使用完全限定的类名。
我正在使用 PHP7.4
【问题讨论】:
-
$class = FooBar::class应该与new \ReflectionClass(new $class)配对使用。还是我误解了这个问题? -
use语句是语法快捷方式。在编译的代码中它们不存在并且类名是完全限定的。
标签: php namespaces