PHP:有没有办法获得方法的返回类型?

时间:2016-05-13 14:16:02

标签: php reflection php-5.6

鉴于以下代码结构,我可以通过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的实例。

1 个答案:

答案 0 :(得分:2)

使用PHP5是不可能的。

你可以(这更像是解决方法而不是解决方案)在声明上输入提示你的变量。这会将属于创建的服务的方法等公开给IDE。

示例:

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

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

语法为:

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

更新:

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

所以:

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

变为:

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