Случай отрицания
Каков правильный формат для исключения экземпляра?
if ( ! $a instanceof stdClass)
или
if ( ! ($a instanceof stdClass) )
Я убедил себя, что последний правильный путь, вероятно, после нескольких месяцев работы в блоге, но после некоторых тестов командной строки оба они кажутся эквивалентными. Они?
Ответы
Ответ 1
Давайте прочитаем документы:
В следующей таблице перечислены операторы в порядке приоритета с наивысшими приоритетами вверху. [...]
Associativity Operators Additional Information
================== =============== ======================
non-associative instanceof types
right ! logical
Итак, instanceof
имеет более высокий приоритет, поэтому оба утверждения эквивалентны. Скобки, вероятно, используются, чтобы сделать их очевидными, поэтому вам не нужно искать их в документации.
Ответ 2
Являются ли они эквивалентными?
Да, логически они эквивалентны. Ответ от Álvaro G. Vicario дает более подробную информацию о том, почему.
Какой правильный формат для отрицания экземпляра?
Из этих двух аргументов следует, что следующее более читаемо. Но нет единого пути. Это красота и проклятие PHP.
!($a instanceof stdClass)