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