Подтвердить что ты не робот

Случай отрицания

Каков правильный формат для исключения экземпляра?

if ( ! $a instanceof stdClass)

или

if ( ! ($a instanceof stdClass) ) 

Я убедил себя, что последний правильный путь, вероятно, после нескольких месяцев работы в блоге, но после некоторых тестов командной строки оба они кажутся эквивалентными. Они?

4b9b3361

Ответ 1

Давайте прочитаем документы:

В следующей таблице перечислены операторы в порядке приоритета с наивысшими приоритетами вверху. [...]

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

Итак, instanceof имеет более высокий приоритет, поэтому оба утверждения эквивалентны. Скобки, вероятно, используются, чтобы сделать их очевидными, поэтому вам не нужно искать их в документации.

Ответ 2

Являются ли они эквивалентными?

Да, логически они эквивалентны. Ответ от Álvaro G. Vicario дает более подробную информацию о том, почему.

Какой правильный формат для отрицания экземпляра?

Из этих двух аргументов следует, что следующее более читаемо. Но нет единого пути. Это красота и проклятие PHP.

!($a instanceof stdClass)