小编典典

使用类型提示时无法传递空参数

all

以下代码:

class Type {

}

function foo(Type $t) {

}

foo(null);

运行时失败:

PHP 致命错误:传递给 foo() 的参数 1 不能为空

为什么不允许像其他语言一样传递 null ?


阅读 70

收藏
2022-06-14

共1个答案

小编典典

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它的类型,你可以遵循上面的例子。

你可以在这里阅读更多。


PHP 7.0 或更早版本

您必须添加一个默认值,例如

function foo(Type $t = null) {

}

这样,您可以传递一个空值。

这记录在手册中关于类型声明的部分中:

NULL如果参数的默认值设置为 ,则声明可以接受值NULL

2022-06-14