tips

get_post_metaの分岐は三項演算子を活用すると良いかもしれない

三項演算子省略形の活用について

何を今更みたいな話題です。

PHP5.3以降、三項演算子は真ん中を省略できるエルビス演算子というものが使えるようになったわけですが、使えないような環境もままあったりもしたのですが、そんなお仕事はお断りするとして、そろそろいいだろうと言うことで、今後は意識して使ってみることにする。プラグイン化したりすると、いろんな環境で動かないと具合が悪いんで、どうしてもレガシー対応になるのですが、技術や考え方もレガシー化する今日この頃・・・。

三項演算子をすぐに気がついたのは、wordpress案件で使う機会が多いと言うこと。特に、get_post_metaでカスタムフィールドを呼び出す場合、条件分岐で、いくつかの値をを比較して付与するってのはよくあるケースだと思う。

 

if ( get_post_meta( $post_id, 'metakey_1', true ) ){
  $metavalue = get_post_meta( $post_id, 'metakey_1', true );
} else {
  $metavalue = get_post_meta( $post_id, 'metakey_2', true );
}

↑時々見るこんな手順ですが、metakey_1を二度呼び出しているので、よろしくない。

 

$metavalue = get_post_meta( $post_id, 'metakey_1', true );
if ( !$metavalue ){
  $metavalue = get_post_meta( $post_id, 'metakey_2', true );
}

処理的に問題ないし、可読性も良いのでこれで良いと思ってそうしてきたわけですが、ただ、値を渡したいだけならこれでも間怠っこしく感じる時もある。

 

$metavalue = get_post_meta( $post_id, 'metakey_1', true ) ?: get_post_meta( $post_id, 'metakey_2', true );

if演算子と用途がはっきり分かれていいな、と思った次第です。