PHP: 有没有办法得到方法的return类型?

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

鉴于以下代码结构,是否有一种方法可以让我使用 PHP 5.6 获得 return 类型的 FooFactory->createService 方法?我试过 ReflectionClass 和 ReflectionMethod classes 但无法提前找到 way.Thanks。

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

class Foo {
    /*...methods...*/
}

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

使用 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');