somemo's diary

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【php】エラー抑制演算子とisset

エラー抑制演算子(@)に関する興味深い記事があったので感想を書いて見ます。

エラー制御演算子(@)

そもそも、エラー抑制演算子とはどう使えるのか?

  • 値を得ることができるものの場合、@演算子を前に付けることが可能
  • 上記より、@$cache[$key]とすることでkeyが存在しないときに発生するエラーを制御できる
  • もちろん関数にも使用できる

自分が今まで使ったパターンは、ファイル操作系の関数に対してです。理由は、ファイルの存在チェックを省略するときに使っていました。

こう考えてみると、何も考えずにエラー出ちゃうから@つけました感があります。(特にfooen)

二番目のパターンとして使ったことはないですし、初めて知りました。インデックスが存在しなくてもいい、つまり値がnullでも問題ない場合に使えます。

このような場合、今まではissetまたはnullを許容したいときにはarray_key_existsを使用してから値の取得を行っています。

無かった場合を考えて行うのがissetで、エラーを考えずにデフォルト値(null)で十分という違いがあると思いました。

まとめ

なんでもエラー制御すればいいものじゃないし、事前チェックだけにしなくてもいい。けど、@ばかり付いてるの気持ち悪いかなぁ

参考