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