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');
鉴于以下代码结构,是否有一种方法可以让我使用 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');