2016-08-24 31 views
0

是否可以在PHP中指定方法的返回类型?PHP依赖注入返回类型,方法链接

比如我有ImageInterface它具有方法:

  • 调整大小($ W,$ H)
  • 的setpath($ PATH)
  • getContents()

我有一个使用PHP库干预的具体类。在调整大小我称之为从干预调整大小,然后返回$这在方法结束...

function resize($w, $h) { 
    $this->image->resize($w, $h); 
    return $this; 
} 

这样做让我调整大小链()和getContents(),所以我可以做一个快速$ image-> resize(400,100) - > getContents(),而不是有两个单独的语句。

是否可以指定/约束resize()的返回类型为ImageInterface的类型?现在它在运行时正确解析,但IDE不知道我们被允许链接setPath和getContents。此外,它不会强制将此类型的ImageInterface实现,这可能会导致问题。

+3

作为PHP7你可以声明返回类型。 http://php.net/manual/en/functions.returning-values.php#functions.returning-values.type-declaration –

+0

我认为这真的取决于你来修改你的IDE规则。 IDE的PHP7语法很快就会出现,但它似乎还没有完成。 – RiggsFolly

回答

0

您可以使用PHPDoc注释来声明返回类型(以及许多其他事物...)。要使其工作,您还必须使用支持这些注释的IDE(如NetBeans,PHPStorm等)。简单的例子:

/** 
* Describe what this method does. 
* 
* @param int $w This is the desired width in pixels. 
* @param int $h This is the desired height in pixels. 
* @return ImageInterface 
*/ 
function resize($w, $h) { 
... 
} 

更多细节在这里:PSR-5: PHPDoc

+0

感谢您的评论,我知道这是一个选项,但我确实在寻找一种以编程方式执行此操作的方式,而不是通过注释。我想通过PHP代码实现它的原因是迫使未来的实现返回它们的实例,所以可以在不破坏使用它们的代码的情况下交换出服务。 – kyle