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