关于 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
广告
将在 10 秒后关闭
bannerAds