从PHP 7.0开始,可以在函数中设置返回类型。
但是你不能强制它,因为语言不支持void
返回类型,静态分析很难知道函数是否会返回与void不同的东西。
在PHP 7.1中,允许使用void
返回类型。这意味着现在所有函数都可以建立返回类型。
有没有办法以这种方式配置PHP,以便在函数没有建立返回类型时发出“语法错误”?
例如:
private function foo()
{
$this->dummy();
}
会抛出语法错误,而这个:
private function foo() : void
{
$this->dummy();
}
不会。
你不能在PHP中强制使用它,但你可以使用PHPCS(或类似的)来嗅探它。
Slevomat Coding Standard嗅到PHPCS包括检查:
SlevomatCodingStandard.TypeHints.TypeHintDeclaration
检查缺少的@return和/或本机返回类型提示,以防方法主体包含带值的返回。
你可以与interfaces近距离接触。
interface testinterface {
public function testfunction() : void;
}
class testclass implements testinterface {
public function testfunction() {
echo 'foo';
}
}
将导致以下错误:
致命错误:testclass :: testfunction()的声明必须与testinterface :: testfunction()兼容:void in ...
但是,接口不能防止未在接口中定义的函数,并且您必须在某处确保逻辑,以确保类声明正在实现接口(可以使用instanceof
operator实现)。