From 2b74ceaadb134918be7599a331de8ea3bc41f04b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AD=A6=E7=94=B0=20=E6=86=B2=E5=A4=AA=E9=83=8E?= Date: Sat, 11 Jul 2026 14:26:50 +0900 Subject: [PATCH] =?UTF-8?q?language/operators:=20=E5=8D=98=E9=A0=85?= =?UTF-8?q?=E6=BC=94=E7=AE=97=E5=AD=90=E3=81=A8=20instanceof=20=E3=81=AE?= =?UTF-8?q?=E5=84=AA=E5=85=88=E9=A0=86=E4=BD=8D=E3=80=81=E5=89=8D=E7=BD=AE?= =?UTF-8?q?=E6=BC=94=E7=AE=97=E5=AD=90=E5=86=85=E3=81=AE=E4=BB=A3=E5=85=A5?= =?UTF-8?q?=E3=81=AE=E7=B5=90=E5=90=88=E3=81=AB=E9=96=A2=E3=81=99=E3=82=8B?= =?UTF-8?q?=E6=B3=A8=E8=A8=98=E3=82=92=E5=90=8C=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 概要 php/doc-en@80dfa568 (doc: clarify unary-vs-instanceof precedence and assignment binding inside prefix operators) に追従し、演算子の優先順位に関する注記を2つ追加しました。 ## 翻訳内容 - language/operators/precedence.xml — 単項演算子と instanceof の優先順位、前置演算子内での代入の結合を明確化 1. php/doc-en@80dfa568 追加した注記: - 演算子表の直後 — キャスト演算子と同じ行にある単項演算子 (`~`、`@`、単項の `+`/`-`) は `instanceof` よりも強く結合するが、`!` は弱く結合する。したがって `(int) $x instanceof Foo` は `((int) $x) instanceof Foo` に、 `!$x instanceof Foo` は `!($x instanceof Foo)` にグループ分けされる - `if (!$a = foo())` の注記内 — 代入の左辺は変数でなければならないため、代入は周囲にある 優先順位の高い前置演算子ではなくその変数とグループ分けされる。`clone`、キャスト演算子、 `@`、`~` も同様で、`clone $a = $b` は `clone ($a = $b)` にグループ分けされる 原文の差分は追加のみのため、既存の訳文は変更していません。 --- language/operators/precedence.xml | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/language/operators/precedence.xml b/language/operators/precedence.xml index d5591a3d35..c28dc31dfe 100644 --- a/language/operators/precedence.xml +++ b/language/operators/precedence.xml @@ -1,6 +1,6 @@ - + 演算子の優先順位 演算子の優先順位 @@ -305,6 +305,19 @@ + + + キャスト演算子と同じ行にある単項演算子 + (~@、および単項演算の + +/-) は + instanceof よりも強く結合しますが、 + !instanceof よりも弱く結合します。 + そのため (int) $x instanceof Foo は + ((int) $x) instanceof Foo とグループ分けされ、 + !$x instanceof Foo は + !($x instanceof Foo) とグループ分けされます。 + + 結合時の評価 @@ -421,6 +434,16 @@ x minus one equals 3, or so I hope のような式も許します。この場合は foo() の戻り値が $a に代入されます。 + + これが可能なのは、代入の左辺は変数でなければならず、 + そのため代入は、周囲にある優先順位の高い前置演算子ではなく、その変数とグループ分けされるからです。 + 同じことが、式をオペランドに取る他の前置演算子、 + たとえば clone、キャスト演算子、@、 + ~ にも当てはまります。 + たとえば clone $a = $b は + (clone $a) = $b ではなく + clone ($a = $b) とグループ分けされます。 + &reftitle.changelog;