PHP依赖注入返回类型,方法链接
问题描述:
是否可以在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实现,这可能会导致问题。
答
您可以使用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
作为PHP7你可以声明返回类型。 http://php.net/manual/en/functions.returning-values.php#functions.returning-values.type-declaration –
我认为这真的取决于你来修改你的IDE规则。 IDE的PHP7语法很快就会出现,但它似乎还没有完成。 – RiggsFolly