我可以强制PHP 7.1语法在返回类型中要求类型提示吗?

时间:2019-03-18 17:03:03

标签: php syntax syntax-error return-type code-cleanup

从PHP 7.0开始,可以可以在函数中设置返回类型。

但是您不能强制,因为该语言不支持void返回类型,并且通过静态分析很难知道函数是否会返回不同的内容是否无效。

在PHP 7.1中,允许使用void返回类型。这意味着现在所有功能都可以建立返回类型。

问题

有没有一种方法可以这样配置PHP,以便在函数未建立返回类型时发出“语法错误”?

例如:

private function foo()
{
    $this->dummy();
}

会引发语法错误,而这:

private function foo() : void
{
    $this->dummy();
}

不会。

2 个答案:

答案 0 :(得分:2)

您不能在PHP中强制使用此功能,但可以使用PHPCS(或类似功能)对其进行嗅探。

Slevomat Coding StandardPHPCS嗅探对此进行了检查:

  

SlevomatCodingStandard.TypeHints.TypeHintDeclaration

     

检查是否缺少@return和/或本机返回类型提示   方法主体包含带有值的return。

答案 1 :(得分:0)

您可以和interfaces保持亲密关系。

interface testinterface {

    public function testfunction() : void;

}

class testclass implements testinterface {

    public function testfunction() {
        echo 'foo';
    }

}

将导致以下错误:

  

致命错误:testclass :: testfunction()的声明必须与testinterface :: testfunction()兼容:

但是,接口不能防范未在接口中定义的函数,因此必须在逻辑上确保类声明实现了接口(可以通过instanceof operator实现)。 / p>