可空型別提示

引數

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