给定以下代码结构,有没有一种方法可以用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');