可空类型提示
参数
在类型提示之前使用 ?
运算符在 PHP 7.1 中添加了可空类型提示。
function f(?string $a) {}
function g(string $a) {}
f(null); // valid
g(null); // TypeError: Argument 1 passed to g() must be of the type string, null given
在 PHP 7.1 之前,如果参数具有类型提示,则必须声明默认值 null
以接受空值。
function f(string $a = null) {}
function g(string $a) {}
f(null); // valid
g(null); // TypeError: Argument 1 passed to g() must be of the type string, null given
返回值
在 PHP 7.0 中,具有返回类型的函数不能返回 null。
在 PHP 7.1 中,函数可以声明可为空的返回类型提示。但是,该函数仍必须返回 null,而不是 void(无/空返回语句)。
function f() : ?string {
return null;
}
function g() : ?string {}
function h() : ?string {}
f(); // OK
g(); // TypeError: Return value of g() must be of the type string or null, none returned
h(); // TypeError: Return value of h() must be of the type string or null, none returned