Hi, On Thu, Jan 9, 2020 at 10:02 PM Kalle Sommer Nielsen <ka...@php.net> wrote: > > [...] > > use Interfaces; > if(!$object instanceof Interfaces\MyInterface) > { > // Notice the ! is right associative and instanceof is non > associative, hence the lack of parantheses > }
Sorry for off-topic but that comment is incorrect: the fact that `!$x instanceof Foo` is evaluated as `!($x instanceof Foo)` (which I find more readable with explicit parentheses, by the way) is not due to the *associativity* of the operators but to their relative *precedence*. For instance, `===` is non-associative too but `!$x === 42` is evaluated as `(!$x) === 42` (not as `!($x === 42)`). According to the docs, associativity only matters for operators of equal precedence, e.g. `4 - 3 - 2` is evaluated as `(4 - 3) - 2`, and `4 ** 3 ** 2` is evaluated as `4 ** (3 ** 2)`. -- Guilliam Xavier -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php