3


!$foo = new Bar($var, $var2);
PHPコードの一部を見つけました。何 "!" 意味?

4

3 に答える 3

4

!!この例では単なる否定であり、役に立たない。

于 2012-07-09T09:02:33.943 に答える
1

特別なことは何も意味しません。タイプミスがあると思います。

次のコードを検討します。

$foo = new Bar($var, $var1);
var_dump(!$foo);        // bool(false)
var_dump($foo == true); // bool(true)
  • オブジェクトをブール値にキャストすると、常に。になりtrueます。
  • オブジェクトをなしで別のオブジェクトと比較すると、===常に。になりtrueます。

したがって、割り当ての左側にあるオブジェクトに否定を使用しても、ここでは何の効果もありません。

于 2012-07-09T09:07:12.070 に答える
1

この文脈では、それはまったく何の意味もありません。

!は「論理否定」演算子であり、評価対象をに変換TRUEFALSE、その逆も同様です。PHPでは他に特別な意味はありません。

これは、ブールテストまたは割り当ての一部としてのみ実際に意味があります。次に例を示します。

$false = FALSE;
if (!$false) {
  // This code will be executed
}

$true = !$false;
// $true will now be TRUE

あなたの例で使用されているコンテキストでは、オブジェクトのインスタンス化は2つのことのうちの1つしか実行しないため、意味がありません。

  1. オブジェクトを返します-ブールテストでは、すべてのオブジェクトのすべてのインスタンスが評価されますがTRUE、1つの例外は空SimpleXMLElementです。
  2. 例外をスローします。この場合、新しいインスタンスが割り当てられる変数には以前の値(falseと評価される可能性があります)が残りますが、実行すると現在のプロシージャがすぐに終了するため、テストが評価されることはありません。
于 2012-07-09T10:18:41.487 に答える