如何在PHP中获取类方法的返回类型?

如何在PHP中获取类方法的返回类型?,php,return-type,Php,Return Type,我有以下接口A和类B和C(带有PHP8.0静态返回类型): 如何获取新实例的方法getSomething()的返回类型?上课可以吗 我的示例返回的self或static不是我想要的输出。我想得到具体的名称类(A,B等)。在没有任何解决办法的情况下是否可能明确?调查后,这是不可能的ReflectionClass仅返回定义的返回类型,在使用类型时不返回真实的返回类型:static或self(AB等)我知道的唯一方法是通过注释。因为您的接口定义了方法,所以实现必须返回类型A,但您仍然可以在实现方法上使

我有以下接口A和类B和C(带有PHP8.0静态返回类型):

如何获取新实例的方法
getSomething()
的返回类型?上课可以吗


我的示例返回的
self
static
不是我想要的输出。我想得到具体的名称类(
A
B
等)。在没有任何解决办法的情况下是否可能明确?调查后,这是不可能的
ReflectionClass
仅返回定义的返回类型,在使用类型时不返回真实的返回类型:static或self(
A
B
等)

我知道的唯一方法是通过注释。因为您的接口定义了方法,所以实现必须返回类型A,但您仍然可以在实现方法上使用
/**@return B*/
。或者,我认为您可以省略A::getSomething()上的返回类型self,然后在B中进一步限制它。当您知道它的
self
时,您不能只使用
$newB->getName()
?我修改了这个问题。我不想预先定义方法可以返回的类型。现在可以在PHP中使用吗?当您知道它是
self
static
时,为什么不返回
$newClass
的值呢?它具有您想要的类名。
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;
    }
}
$classes = [ 'B', 'C'];

$newClass = $classes[array_rand($classes)];

print((new ReflectionClass(new $newClass()))->getMethod('getSomething')->getReturnType());