如何使PHP7解析器强制返回类型?

如何使PHP7解析器强制返回类型?,php,php-7,return-type,php-7.1,php-7.2,Php,Php 7,Return Type,Php 7.1,Php 7.2,最近的PHP中是否有任何指令(可能类似于declare(strict_types=1);)告诉PHP解释器在函数中“强制”返回类型,如果没有返回类型,它会由于解析/语法错误而失败 我希望代码中包含以下内容: public function add( int $a, int $b ) : int { return $a + $b; } 是允许的,但这个: public function add( int $a, int $b ) { return $a + $b; } 被解释器

最近的PHP中是否有任何指令(可能类似于
declare(strict_types=1);
)告诉PHP解释器在函数中“强制”返回类型,如果没有返回类型,它会由于解析/语法错误而失败

我希望代码中包含以下内容:

public function add( int $a, int $b ) : int
{
    return $a + $b;
}
是允许的,但这个:

public function add( int $a, int $b )
{
    return $a + $b;
}
被解释器禁止,导致解析错误,因此即使未调用函数,脚本也不会执行

我的意思是:


这并不是说我想“在某个函数中强制使用返回类型”(我已经这样做了)。我想要的是配置“强制我在文件或项目的所有函数中强制返回类型”。

没有强制固定返回类型的问题是什么?我喜欢用PHP编写代码的懒散方式。在大型项目中,我可能很难找到输入错误的变量名或输入错误的返回值。但这是有补救办法的

如果调用方需要一个确定的类型,它无论如何都可以(必须!)测试它。这可以通过将结果转换为请求的类型并在失败时引发异常来实现,如中所示。或者在整数的情况下,简单地使用is_numeric、is_nan、is_real等。。您可以将这些测试放在基本对象中每种类型的成员函数中,甚至可以将全局singleton tester对象与这些成员函数一起使用等等。

我看了一下,现在和将来的版本都没有办法做这样的事情


declare(strict_types=1)
()也一样,它只确保对现有的声明进行严格的类型检查。

您的问题的简短答案是否定的。PHP没有任何东西强迫您定义返回类型。它也不会强制您为参数定义类型--strict\u types=1强制传递的值为方法的正确类型(如果定义了类型),但您仍然可以使用未定义类型的参数编写方法

PHP可能会在将来的版本中按照您所期望的方式进行更改,但目前还没有任何版本


同时,我建议使用代码检查工具来帮助您在代码中强制执行此类细节。像PHP代码嗅探器这样的工具将是一个良好的开端。您可以将其添加到IDE中,以便在代码不符合定义的标准时实时收到警告,并且可以将其添加到工作流中,以便在测试失败时防止提交和/或部署代码。

据我所知,目前(PHP7.2)无法强制返回类型声明。好的,谢谢!那么看看7.3中是否有。我想指出问题中的示例代码是无效的PHP,因为您的变量没有符号。:-)哦,是的!更正,thnx!a) 我只是想知道是否有一种方法可以让PHP在返回类型方面表现为强类型语言。b) 如果你是一个好的程序员,你应该始终做到“干净的代码”,不受项目大小的影响。也许你会喜欢这样读: