From 17f4d149401800520a18ba1b99766570d1de7a5c Mon Sep 17 00:00:00 2001 From: tianfenghan Date: Fri, 17 Apr 2026 11:34:40 +0800 Subject: [PATCH] =?UTF-8?q?feat(php):=20=E6=B7=BB=E5=8A=A0=E6=8C=89?= =?UTF-8?q?=E4=BD=8D=E6=88=96=E8=B5=8B=E5=80=BC=E6=93=8D=E4=BD=9C=E7=AC=A6?= =?UTF-8?q?=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 CompilerBase.php 中添加 Expr_AssignOp_BitwiseOr 的解析处理 - 实现 parseAssignOpBitwiseOr 方法处理 |= 操作符 - 添加相应的单元测试文件 assignop_bitwiseor.phpt 验证功能 --- src/Php/CompilerBase.php | 7 +++++++ tests/aot/operator/assignop_bitwiseor.phpt | 13 +++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 tests/aot/operator/assignop_bitwiseor.phpt diff --git a/src/Php/CompilerBase.php b/src/Php/CompilerBase.php index 5b164d95..c6a1bcce 100644 --- a/src/Php/CompilerBase.php +++ b/src/Php/CompilerBase.php @@ -390,6 +390,8 @@ class CompilerBase extends \PhpAot\Core\Translator return $this->parseAssignOpShiftRight($expr); case 'Expr_AssignOp_BitwiseAnd': return $this->parseAssignOpBitwiseAnd($expr); + case 'Expr_AssignOp_BitwiseOr': + return $this->parseAssignOpBitwiseOr($expr); case 'Expr_AssignOp_BitwiseXor': return $this->parseAssignOpBitwiseXor($expr); case 'Expr_AssignOp_Pow': @@ -2235,6 +2237,11 @@ class CompilerBase extends \PhpAot\Core\Translator return $this->parseAssignOp($expr, '&='); } + private function parseAssignOpBitwiseOr(Expr\AssignOp\BitwiseOr $expr): string + { + return $this->parseAssignOp($expr, '|='); + } + protected function parseAssignOpPow(Expr\AssignOp\Pow $expr): string { return $this->parseAssignOp($expr, '**='); diff --git a/tests/aot/operator/assignop_bitwiseor.phpt b/tests/aot/operator/assignop_bitwiseor.phpt new file mode 100644 index 00000000..c6faa284 --- /dev/null +++ b/tests/aot/operator/assignop_bitwiseor.phpt @@ -0,0 +1,13 @@ +--TEST-- +Operator: AssignOp BitwiseOr +--FILE-- + +--EXPECT-- +int(116)