63

instanceof を否定する正しい形式はどれですか?

if ( ! $a instanceof stdClass)

また

if ( ! ($a instanceof stdClass) ) 

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

4

2 に答える 2

98

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

次の表に、優先順位の高い順に演算子を示します。[...]

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

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

于 2013-01-16T16:08:45.127 に答える
16

それらは同等ですか?

はい、論理的には同等です。アルバロG.ヴィカリオの回答は、その理由を詳しく説明しています。

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

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

!($a instanceof stdClass)
于 2013-01-16T16:07:14.693 に答える