簡體   English   中英

如何在 PHP 中獲取類方法的靜態返回類型?

[英]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());

我的示例返回selfstatic這不是我想要的輸出。 我想得到一個具體的名稱類( AB等)。 是否有可能在沒有任何解決方法的情況下明確?

很好的解決方案是“ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM