1時間後に期限切れになるWordPressトランジェントを使用して、整数値を格納します。トランジェントが存在するかどうかを評価するためにswitch()
と複数のcase()
ステートメントを使用しようとしています(つまりtrueまたはfalse)。
これが私の質問です。
=
、==
、===
)がこのコンテキストに理想的ですか?例1
$transient = get_transient( 'foobar' );
switch( $transient ) :
case( true ) :
// do stuff
break;
case( false ) :
// do stuff
break;
endswitch;
versus
例2
$transient = get_transient( foobar );
switch( $transient ) :
case( $transient = true ) :
// do stuff
break;
case( $transient = false ) :
// do stuff
break;
endswitch;
前もって感謝します。
スイッチを使う必要がありますか?
なぜこんな感じじゃないの?
if ( false === ( $value = get_transient( 'value' ) ) ) {
// this code runs when there is no valid transient set
} else {
// this code runs when there is a valid transient set
}
Aトランジェントが値を返す場合、trueは返されません。トランジェントの値を返します。トランジェントが設定されていない場合はbool(false)を返します
あなたがスイッチを使っているならば、それはこのようになるでしょう:
$ transient = get_transient(foobar);
switch( $transient ) :
case false:
// transient not set
break;
default:
// transient didnt return false
break;
endswitch;
私はswitch
はこれに関して少しかさばると思います。また、あなたの2番目の例は間違いなくそれを行う方法ではありません。
$transient = get_transient( 'foobar' );
if( false !== $transient ) { // boolean false or has no value
//code goes here
}
else { // any other case
//code goes here
}
===
/!==
は値と型で比較するので、あなたのトランジェントが整数の0
であってもそれはfalse
とは見なされません。
どちらの例も、get_transientから返される値には不適切です。一時値が見つからない場合はget_transientはfalseを返しますが、一時値が0の場合はfalseと評価されます。
PHP switchステートメントは常にゆるい比較を行うので、一時的な値が0の場合には望ましい結果が得られない可能性があります。そのため、この場合はswitchを使用しないほうが良いです。
あなたの一時的な値がfalseに評価されるものになることは決してないだろうと確信していれば例1はうまくいきますが。