以下代码:
class Type {
}
function foo(Type $t) {
}
foo(null);
运行时失败:
PHP 致命错误:传递给 foo() 的参数 1 不能为 null
为什么不允许像其他语言一样传递null?
PHP 7.1 或更高版本(2016 年 12 月 2 日发布)
您可以显式声明一个变量为null
用这个语法
function foo(?Type $t) {
}
这将导致
$this->foo(new Type()); // ok
$this->foo(null); // ok
$this->foo(); // error
因此,如果您想要一个可选参数,您可以遵循约定Type $t = null
而如果你需要提出论点,则接受两者null
及其类型,您可以按照上面的示例进行操作。
您可以阅读更多内容here https://wiki.php.net/rfc/nullable_types.
PHP 7.0 或更早版本
您必须添加一个默认值,例如
function foo(Type $t = null) {
}
这样,您就可以向其传递空值。
这在手册中有关的部分中有记录类型声明 http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration:
可以做出声明接受NULL
如果参数的默认值设置为NULL
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)