关于 PHP nullsafe 操作符(?->)的问题
总结。
- 実務でnullsafe演算子を使う事があったのでどういうものかまとめておく。
空安全运算符
nullsafe演算子は下記である。
?->
下記の様なコードがあったとする。
if (is_null($repository)) {
$result = null;
} else {
$user = $repository->getUser(5);
if (is_null($user)) {
$result = null;
} else {
$result = $user->name;
}
}
下記の様な処理になっている。
$repositoryがnullのときnullを$resultに格納する。
$repositoryがnullではないかつ、$repository->getUser(5)がnullのときnullを$resultに格納する。
$repositoryがnullではないかつ、$repository->getUser(5)がnullじゃないとき$user->nameを$resultに格納する。
PHP8からのnullsafe演算子を用いると下記の様に記載する事ができるらしい。(nullsafe演算子の左側の値がnullの時にそれ以降処理を実行せずnullを返す。)
$result = $repository?->getUser(5)?->name;
nullsafe演算子を用いることで複雑な記載を1行で記載する事ができる。
参考资料
-
- https://qiita.com/rana_kualu/items/c967d58582ef75e73d7d
-
- https://qiita.com/atsu_kg/items/9122a5a1091557b041b3
- https://www.php.net/manual/ja/language.oop5.basic.php#language.oop5.basic.nullsafe