はじめに
2020年の8月から都内の企業でWebエンジニアとして働いています。
開発環境はいわゆるフルスクラッチPHPなのですが、
私はRubyをメインで学習するプログラミングスクール出身でしたので、入社前はほとんどPHPに触ったことがありませんでした。
入社から1ヶ月ほど経った今では基礎文法も大体理解し、新しく出会った関数などをその都度調べながら
既存システムの改修業務を行っています。
そんな業務中、特に違和感のある記述を見かけたので
すぐに忘れないよう、Qiita上に残しておこうと思います。
問題のコード
isset($_REQUEST['search']) && $var = $_REQUEST['search'];
なんの変哲もないコードですが、人目見たときに混乱しました。
今までisset()を使う際は
if(isset($_REQUEST['search'])){
$var = $_REQUEST['search'];
}
↑のようなパターンを見慣れていたので
論理演算子 && はANDの条件として使われているイメージしか持っていませんでした。
そんな中、出会った問題のコード
isset($_REQUEST['search']) && $var = $_REQUEST['search'];
初見時ワイ「何がANDやねん」
と、心の中でツッコミまくりました。
どういう動きをするのか調べて見ましたが、if文で条件分岐の例ばかり。
結局クリティカルな回答がすぐに見つからなかったので、先輩に質問させてもらいました。
結局のところ
左辺のisset()がtrueの場合に、右辺の代入が行われると教えていただきました。
if文とやってることはほとんど変わらないような気がしますが、今回のように単純な条件下ではワンライナーで読みやすくなる書き方ですね。
試しにpaiza.ioを使用して
以下のコードを実行してみました
$str = 'Hello!';
isset($str) && $var = $str;
echo $var;
この手の書き方はPHP以外の言語でもたまに見かけるらしいです。
まとめ
可読性が上がる場合は今回のようなワンライナーによる記述を
自分も積極的に使っていこうと思います。
まだ入社間もないですが、実務で触るコードは楽しいですね。
しばらくはPHP漬けの日々を送ろうと思います。