タイプヒンティングが使えるようになるphp7系ですが、
php7.1はさらにパラメータや返り値の型宣言で nullable
指定ができるようになりました。
Null許容型
型の前にクエスチョンマークをつけると、nullable であることを指定できます。
こうすることで指定型だけでなくnullも渡せるようになります。
関数の戻り値の場合
<?php
function test_return(): ?string
{
return 'hogehoge';
}
var_dump(test_return());
function test_return(): ?string
{
return null;
}
var_dump(test_return());
出力結果
ーーーーー
string(8) "hogehoge"
NULL
上記のようにstring指定の型でもnullを返すことができます。
関数の引数の場合
function test_dump(?string $name)
{
var_dump($name);
}
test('hogehoge');
test(null);
出力結果
ーーーーー
string(8) "hogehoge"
NULL
上記のようにstring指定の型でもnullを渡すことができます。
ちなみに、
test_dump();
で上記関数を呼び出した場合は、
Too few arguments to function test_dump(), 0 passed in ...
が発生します。
なので、
function test_dump(string $name = null)
{
var_dump($name);
}
の定義とは違いますね。
参照