PHP:有没有一种方法可以获得方法的返回类型


PHP: Is there a way to get the return type of a method?

给定以下代码结构,有没有一种方法可以用PHP 5.6获得FooFactory->createService方法的返回类型?我尝试过ReflectionClass和ReflectionMethod类,但找不到方法。提前谢谢。

class FooFactory implements FactoryInterface {
    public function createService(/*args*/)
    {
        $foo = new Foo();
        // ...
        //inject dependencies
        // ...
        return $foo;
    }
}
class Foo {
    /*...methods...*/
}

编辑:我需要在不创建FooFactory实例的情况下获得类名。

使用PHP5是不可能的。

您可以(这更像是一种变通方法,而不是一种解决方案)在声明中键入提示变量。这将向您的IDE公开属于已创建服务的方法等。

示例:

/* @var 'MyFooService $myFooService */
$myFooService = FooFactory->createServixce('MyFooService');

请注意,是@var声明将通知您的编辑器变量类型。

语法为:

/* @var [CLASS_NAME] [VARIABLE] */

更新:

刚才看到您不想创建FooFactory的实例。默认情况下,工厂方法不是静态的吗?

因此:

$fooFactory = new FooFactory();
$fooService = FooFactory->getService('FooService');

成为:

$fooService = FooFactory::getService('FooService');