Skip to content

Commit cfe9544

Browse files
authored
Sync precedence.xml: unary-vs-instanceof and prefix-operator assignment binding (#807)
1 parent ad0701c commit cfe9544

1 file changed

Lines changed: 22 additions & 1 deletion

File tree

language/operators/precedence.xml

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<!-- EN-Revision: a7428462fea1c0387cf5e8473b4c48c3c8ac8c2c Maintainer: PhilDaiguille Status: ready -->
2+
<!-- EN-Revision: 80dfa568e602649eb13585bf59a7b6239eddaac3 Maintainer: PhilDaiguille Status: ready -->
33
<!-- Reviewed: no -->
44
<sect1 xml:id="language.operators.precedence">
55
<title>La prioridad de los operadores</title>
@@ -295,6 +295,18 @@
295295
</tgroup>
296296
</table>
297297
</para>
298+
<note>
299+
<simpara>
300+
Los operadores unarios que comparten la fila con los operadores de conversión
301+
(<literal>~</literal>, <literal>@</literal>, y <literal>+</literal>/<literal>-</literal>
302+
unarios) tienen mayor prioridad que <literal>instanceof</literal>, mientras que
303+
<literal>!</literal> tiene menor prioridad. En consecuencia,
304+
<literal>(int) $x instanceof Foo</literal> se agrupa como
305+
<literal>((int) $x) instanceof Foo</literal>, mientras que
306+
<literal>!$x instanceof Foo</literal> se agrupa como
307+
<literal>!($x instanceof Foo)</literal>.
308+
</simpara>
309+
</note>
298310
<para>
299311
<example>
300312
<title>Asociatividad</title>
@@ -409,6 +421,15 @@ x menos uno es igual 3, en todo caso espero
409421
Aunque <literal>=</literal> tiene prioridad sobre la mayoría de los operadores, PHP ejecutará expresiones como: <literal>if (!$a = foo())</literal>.
410422
En esta situación, el resultado de <literal>foo()</literal> será colocado en la variable <varname>$a</varname>.
411423
</para>
424+
<simpara>
425+
Esto es posible porque el lado izquierdo de una asignación debe ser una
426+
variable, por lo que la asignación se agrupa con esa variable en lugar de con
427+
el operador prefijo circundante de mayor prioridad. Lo mismo se aplica a los
428+
demás operadores prefijos que toman una expresión como operando, como
429+
<literal>clone</literal>, los operadores de conversión, <literal>@</literal> y
430+
<literal>~</literal>: por ejemplo, <literal>clone $a = $b</literal> se agrupa
431+
como <literal>clone ($a = $b)</literal>, no como <literal>(clone $a) = $b</literal>.
432+
</simpara>
412433
</note>
413434
<sect2 role="changelog">
414435
&reftitle.changelog;

0 commit comments

Comments
 (0)