PHP の演算子について新しく学んだことをまとめます。
論理演算子について
論理演算子には、よく if 文などで用いられる、「&&」や「||」が存在します。
また、同じく論理積、論理和を表す「and」、「or」を使用することもできます。
しかし、&& と and 、|| と or では演算の優先順位が異なるため、注意が必要です。
&&、||、and、or の順で処理が行われます。
評価自体はすべて短絡評価のため、気をつけるのは優先順位のみとなりそうです。
個人的には優先順位も()を用いて対応したいと思っています。
短絡評価(ショートサーキット)
PHP の評価は短絡評価となっていました。
短絡評価というのは、評価の結果が確定した時点で評価処理を終了するというものです。
例としては
public function isTrue() :bool
{
echo 'isTrue!';
return true;
}
public function isFalse() :bool
{
echo 'isFalse!';
return false;
}
if ($this->isFalse() && $this->isTrue()){
}
上記ソースの if 文の処理結果は isFalse! のみとなります。
こちらの if 文では、isFalse 関数の bool 値で真偽値がわかるため、
右辺の isTrue 関数が呼ばれることなく次の処理に移行します。
良い点として、後続の判定処理で発生しうるエラーを回避する処理を書くことができます。
前半の判定で null チェックを行い、後半で null が発生しないと断定した判定を行うことなどが可能です。
そのため、呼ばれないメソッドでインスタンスの値の変更やテーブルの値の変更など、
後に使用する値に対して変更を行う処理が行われている場合は、バグになる可能性があります。
普段意識することはあまりないと思いますが、知っておくとバグ発生時の確認項目として考えることができます。
※完全評価
短絡評価とは違い、すべての真偽値を明らかにして後続の処理を行う評価のことを完全評価といいます。
他の言語では完全評価で記載することもできます。
普段使用する演算子ですが、公式リファレンスを見ると知らないことが思っていたより多かったです。
また新しくわかったことがあればまとめていきたいと思います。