可空型別提示
引數
在型別提示之前使用 ?
運算子在 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