【PHP】返り値 nullableな型
Contents
状況
- 返り値の型宣言で、検索対象のデータがnullであることを許容する場合。
nullを許容する型
- 例えば、stringを返すとしている場合。nullをreturnすると、エラーになる。
- PHP Fatal error: Uncaught TypeError: Return value must be of type string, null returned
function testReturn(): string
{
return null;
}
var_dump(testReturn());
//PHP Fatal error: Uncaught TypeError: testReturn(): Return value must be of type string, null returned
- 戻り値の型宣言で nullを許容するには、「?+型」→「?string」とする(php7.1以降)。
このようにすると、エラーは出ず、「NULL」が返される。 - 想定される状況は、検索条件idに該当するデータの有無を確認する場合等。
<?php
function testReturn(): ?string
{
return null;
}
var_dump(testReturn());
//NULL
?>
- デフォルト値で「NULL」を想定している場合には、引数にnullを設定する。
- デフォルトを宣言した場合、返り値の型宣言する場合、「?int」としないと上手くない。
<?php
function testReturn($a = null)
{
return $a;
}
var_dump(testReturn());
//NULL
?>
<?php
function testReturn($a = null): int
{
return $a;
}
var_dump(testReturn());
//PHP Fatal error: Uncaught TypeError: testReturn(): Return value must be of type int, null returned
?>
<?php
function testReturn($a = null): ?int
{
return $a;
}
var_dump(testReturn());
//NULL
?>
<?php
function testReturn(?int $a)
{
return $a;
}
$b = null;
var_dump(testReturn($b));
//NULL
?>
<?php
function testReturn(?int $a , int $b): ?int
{
return $a + $b;
}
$c = null;
$d = 1;
var_dump(testReturn($c,$d));
//int(1)
?>