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

问题描述 投票:0回答:2

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

但是你不能强制它,因为语言不支持void返回类型,静态分析很难知道函数是否会返回与void不同的东西。

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

Question

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

例如:

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

会抛出语法错误,而这个:

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

不会。

php syntax syntax-error return-type code-cleanup
2个回答
2
投票

你不能在PHP中强制使用它,但你可以使用PHPCS(或类似的)来嗅探它。

Slevomat Coding Standard嗅到PHPCS包括检查:

SlevomatCodingStandard.TypeHints.TypeHintDeclaration

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


0
投票

你可以与interfaces近距离接触。

interface testinterface {

    public function testfunction() : void;

}

class testclass implements testinterface {

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

}

将导致以下错误:

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

但是,接口不能防止未在接口中定义的函数,并且您必须在某处确保逻辑,以确保类声明正在实现接口(可以使用instanceof operator实现)。

© www.soinside.com 2019 - 2024. All rights reserved.