はじめに
この記事を読めば、PHPで使われるNullableについて理解し、使い方まで身につけることができます。
Nullableを使えば、変数や関数の戻り値がnullを許容することを示すことができます。
それではさっそく始めましょう。
●PHPとNullableとは?
PHPでは、型宣言を行うことで変数や関数の戻り値がどのような型を持つべきかを明示することができます。
Nullableはこの型宣言の一部で、特定の変数や関数の戻り値がnullを許容することを示します。
○Nullableの基本
PHPでは、型の前に?マークを付けることでその型がNullableであることを示します。
たとえば、関数の戻り値が文字列かnullであることを示すには次のように書きます。
function getGreeting(): ?string {
// 処理
}
この関数は、string型かnullを戻り値とすることができます。
●Nullableの使い方
それでは、具体的なコードを通じてNullableの使い方を見ていきましょう。
○サンプルコード1:Nullableなパラメータ
このコードでは、greet関数の引数$nameがnullを許容するようにしています。
nullが来た場合は、”Hello, guest!”と表示します。
function greet(?string $name) {
if ($name === null) {
echo "Hello, guest!";
} else {
echo "Hello, " . $name;
}
}
○サンプルコード2:Nullableなプロパティ
ここでは、Userクラスのプロパティ$nameがnullを許容するようにしています。
class User {
public ?string $name;
public function __construct(?string $name) {
$this->name = $name;
}
}
○サンプルコード3:Nullableな戻り値
このコードでは、findUser関数がUser型かnullを返すことを示しています。
$idに該当するUserが存在しない場合はnullを返します。
function findUser($id): ?User {
// $idに該当するUserが存在すればそのUserを返す。
// 該当するUserが存在しなければnullを返す。
}
●Nullableの応用例
さて、Nullableはさまざまな場面で利用することが可能です。
具体的な使用例をいくつか見てみましょう。
○サンプルコード4:オプションパラメータとしてのNullable
このコードでは、makeCoffee関数の引数$typeがnullを許容するようにしています。
もし$typeがnullだった場合、デフォルトのコーヒーの種類である’エスプレッソ’を利用します。
function makeCoffee(?string $type = null) {
if ($type === null) {
$type = 'エスプレッソ';
}
echo $type . "を作ります。";
}
○サンプルコード5:Nullを返す可能性のある関数
このコードでは、findOrder関数がOrder型かnullを返すことを示しています。
該当するOrderが存在しない場合、nullが返されます。
function findOrder($id): ?Order {
// もし$idに該当するOrderが存在すればそのOrderを返す
// それ以外の場合はnullを返す
}
○サンプルコード6:Nullを返す可能性のあるメソッド
このコードでは、OrderRepositoryクラスのfindメソッドがOrder型かnullを返すことを示しています。
該当するOrderが存在しない場合、nullが返されます。
class OrderRepository {
public function find($id): ?Order {
// もし$idに該当するOrderが存在すればそのOrderを返す
// それ以外の場合はnullを返す
}
}
○サンプルコード7:Nullオブジェクトパターン
このコードでは、NullOrderクラスがOrderクラスを継承し、isNullメソッドをオーバーライドしています。
Nullオブジェクトパターンでは、nullを意味する具体的なオブジェクトを作成します。
class NullOrder extends Order {
public function isNull(): bool {
return true;
}
}
○サンプルコード8:Null合体演算子とNullable
このコードでは、ユーザー名がnullの場合にデフォルト値’Guest’を代入するために、Null合体演算子を使用しています。
getName()メソッドがnullを返す可能性がある場合に便利です。
$name = $user->getName() ?? 'Guest';
●注意点と対処法
Nullableを使用する際には、nullが返された時の対処法をしっかりと考えておくことが重要です。
nullを返す可能性がある関数やメソッドを使用する際には、常にnullチェックを行うようにしましょう。
●カスタマイズ方法
また、Nullableの扱いはプロジェクトや開発者のスタイルによります。
必要に応じて、Nullableを使う場所、使わない場所を決めることも大切です。
まとめ
以上が、PHPにおけるNullableの基本的な知識と使い方についての解説です。
Nullableは非常に便利な機能であり、適切に使いこなすことでコードの安全性を向上させることができます。
しかし、使用する際にはnullチェックを忘れないよう注意が必要です。