php7 支持函数返回值声明。就像下面这样:
1 2 3 4 5 6 7 8
| <?php function sum($a, $b): float { return $a + $b; }
// Note that a float will be returned. var_dump(sum(1, 2)); ?>
|
结果是:
在 default weak 模式下,会自动转换返回的类型。在 strong 模式下,如果类型不正确,会抛出类型错误异常。 如果是重写父函数,那么该函数的返回值类型声明也要跟父函数一样。如果父函数没有声明返回值类型,那么子函数是可以声明的。 php7.1.0 开始,可以在冒号以前加上问号(?:) 来表示可以返回 NULL 或特定的类型 比如像这样
1 2 3 4 5 6 7 8
| <?php function sum($a, $b): ?float { return $a + $b; }
// Note that a float will be returned. var_dump(sum(1, 2)); ?>
|
这表示可以返回 NULL 或者 float 问号不仅可以放在返回值之前,还可以放在函数参数前,表示可以为 NULL 比如这样:
1 2 3 4 5 6 7 8 9 10 11 12 13
| <?php ini_set('display_errors', 1);
function test(?string $name) { var_dump($name); }
test('elePHPant'); test(null); test();
?>
|
结果是:
1 2 3
| string(9) "elePHPant" null Uncaught Error: Too few arguments to function test(), 0 passed in...
|
这并不影响默认值的用法
1 2 3 4 5 6 7 8 9 10 11 12 13
| <?php ini_set('display_errors', 1);
function test(?string $name = 'dudu') { var_dump($name); }
test('elePHPant'); test(null); test();
?>
|
结果是:
1 2 3
| string(9) "elePHPant" null string(4) "dudu"
|
参考文档
Returning values Nullable types