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

Xav*_*ero 1 php syntax return-type syntax-error code-cleanup

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

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

在 PHP 7.1 中void允许返回类型。这意味着现在所有函数都可以建立返回类型。

问题

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

例如这个:

private function foo()
{
    $this->dummy();
}
Run Code Online (Sandbox Code Playgroud)

会抛出语法错误,而:

private function foo() : void
{
    $this->dummy();
}
Run Code Online (Sandbox Code Playgroud)

不会。

Ale*_*sky 5

您不能在 PHP 中强制执行此操作,但可以使用 PHPCS(或类似的)来嗅探它。

PHPCS的Slevomat编码标准嗅探包括对此的检查:

SlevomatCodingStandard.TypeHints.TypeHintDeclaration

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