PHP/Null安全性
PHPのNull安全性は、コードがnull
値を安全に扱うための機能や技法を指します。null
は、変数が値を持たないことを示す特殊な値です。PHPでは、null
を操作する際に、意図しないエラーを防ぐために、いくつかの機能やパターンがサポートされています。
以下は、PHPでのNull安全性を確保するための主要な方法です。
Null合体演算子(??)
[編集]PHP 7以降では、null
値を簡潔にチェックできるNull合体演算子 (??
) が導入されています。これは、変数がnull
かどうかを判定し、null
であればデフォルト値を返します。
$value = $input ?? 'default value';
この例では、$input
が存在しないかnull
の場合、'default value'
が返されます。$input
が存在し、かつnull
でない場合はその値が返されます。
Null安全呼び出し演算子(?->)
[編集]PHP 8以降では、Null安全呼び出し演算子 (?->
) が導入されました。これは、オブジェクトのプロパティやメソッドを呼び出す際に、そのオブジェクトがnull
であった場合に自動的にnull
を返します。
$result = $object?->method();
この例では、$object
がnull
の場合、エラーを引き起こさず、単にnull
が返されます。もし$object
がnull
でない場合、そのメソッドが通常通り呼び出されます。
型宣言の厳密化
[編集]PHP 7以降では、関数やメソッドの引数や戻り値に型を宣言することが可能です。これにより、null
が予期せず渡されるのを防ぐことができます。また、?
を使ってnull許容型も定義できます。
function foo(?string $name): ?string { return $name; }
この例では、$name
引数と戻り値にnull
を許容しています。null
を扱うことが許されない場合は、単に型を宣言するだけで、安全性を高めることができます。
isset()
およびempty()
の活用
[編集]PHPの組み込み関数であるisset()
やempty()
は、変数がnull
かどうかをチェックするための基本的なツールです。
isset($var)
は変数がセットされており、かつnull
でないことを確認します。empty($var)
は変数がnull
、空文字、0、空配列など"空"であることを確認します。
if (isset($var)) { // $var is not null }
null
の明示的なチェック
[編集]必要に応じてnull
を明示的にチェックし、処理を適切に分岐させることもできます。
if ($var === null) { // Handle null case }
エラー抑制演算子(@
)の非推奨
[編集]エラー抑制演算子@
を使うことでnull
関連のエラーを抑制することができますが、推奨されません。@
は他の潜在的なエラーも隠してしまうため、代わりに上記の方法でnull
を安全に処理することが重要です。