web-dev-qa-db-ja.com

否定のインスタンス

Instanceofを無効にするための正しい形式はどれですか?

if ( ! $a instanceof stdClass)

または

if ( ! ($a instanceof stdClass) ) 

おそらく数年前のブログ記事を読んだ後、後者は正しい方法だと私は確信しましたが、いくつかのコマンドラインテストの結果、どちらも同等に見えます。 Are彼らですか?

55
Mathew

読みましょう ドキュメント

次の表は、演算子を優先順位の高い順に並べたものです。[...]

Associativity      Operators       Additional Information
================== =============== ======================
non-associative    instanceof      types
right              !               logical

したがって、instanceofの方が優先順位が高いため、両方のステートメントは同等です。括弧はおそらくそれを明確にするために使用されるので、ドキュメントでそれを調べる必要はありません。

82

それらは同等ですか?

はい、論理的には同等です。 答え byÁlvaroG. Vicarioは、詳細whyを提供します。

のインスタンスを否定するための正しい形式はどれですか?

2つのうち、次の方が読みやすいという議論があります。しかし、単一のwayはありません。これがPHPの美しさと呪いです。

!($a instanceof stdClass)
13
Jason McCreary