如果我没有明确返回任何内容,那么php函数到底返回什么?
function foo() {}
什么类型的
它有什么价值?
如何使用===进行准确测试?
这是否从php4更改为php5?
有没有之间的差异
function foo() {}
和function foo() { return; }
(我不是在问如何测试它if (foo() !=0) ...
)
Answers:
null
null
if(foo() === null)
您可以通过以下方法进行尝试:
$x = foo();
var_dump($x);
不从PHP函数返回值的语义与返回null的函数的语义相同。
function foo() {}
$x=foo();
echo gettype($x)."\n";
echo isset($x)?"true\n":"false\n";
echo is_null($x)?"true\n":"false\n";
这将输出
NULL
false
true
如果将foo替换为,则会得到相同的结果
function foo() {return null;}
从php4到php5到php7的这种行为没有改变(我刚刚测试过以确保!)
指定函数返回类型时,我确实发现了一个奇怪的地方。当您这样做时,您必须明确有关从函数中返回某些内容。
<?php
function errorNoReturnDeclared($a = 10) : ?string {
if($a == 10) {
echo 'Hello World!';
}
}
errorNoReturnDeclared(); //Fatal error
错误:
Uncaught TypeError: Return value of errorNoReturnDeclared() must be of the type string or null, none returned in
因此,如果您决定在旧函数上添加一些返回类型规范,请务必考虑一下。