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を安全に処理することが重要です。