[英]How to get static return type of a class method in PHP?
我有以下接口 A 和類 B 和 C(使用 PHP8.0 靜態返回類型):
interface A {
public function getSomething(): self;
}
class B implements A {
public function getSomething(): self
{
return $this;
}
}
class C implements A {
public function getSomething(): static
{
return $this;
}
}
如何獲取新實例方法getSomething()
的返回類型? ReflectionClass類有可能嗎?
$classes = [ 'B', 'C'];
$newClass = $classes[array_rand($classes)];
print((new ReflectionClass(new $newClass()))->getMethod('getSomething')->getReturnType());
我的示例返回self
或static
這不是我想要的輸出。 我想得到一個具體的名稱類( A
, B
等)。 是否有可能在沒有任何解決方法的情況下明確?
很好的解決方案是“ Nette 框架”dev-stack 的一部分,它提供了Nette\Utils\Reflection
helper。
更多信息在這里: https ://doc.nette.org/en/utils/reflection#toc-getreturntype
經過調查,是不可能的。 ReflectionClass
只返回定義的返回類型,在使用類型時不是真正的返回類型:靜態或自我( A
. B
等)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.