From 1e7401b57d17c6c63e00deadf76fa0f6ceaead39 Mon Sep 17 00:00:00 2001 From: tianfenghan Date: Wed, 10 Jun 2026 15:55:56 +0800 Subject: [PATCH] =?UTF-8?q?refactor(php):=20=E4=BC=98=E5=8C=96SsaPropOptim?= =?UTF-8?q?izer=E4=B8=AD=E7=9A=84=E8=8A=82=E7=82=B9=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E5=92=8C=E4=BB=A3=E7=A0=81=E6=B8=85=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除未使用的NodeAbstract导入 - 修正注释中的拼写错误touched again afterward - 将节点名称类型检查从通用Node改为具体的Node\Identifier - 删除冗余的字符串类型检查逻辑 - 简化ArrayDimFetch节点的条件判断逻辑 --- src/Php/Optimizer/SsaPropOptimizer.php | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/Php/Optimizer/SsaPropOptimizer.php b/src/Php/Optimizer/SsaPropOptimizer.php index b6b56b28..bbb594f0 100644 --- a/src/Php/Optimizer/SsaPropOptimizer.php +++ b/src/Php/Optimizer/SsaPropOptimizer.php @@ -26,7 +26,6 @@ use PhpAot\Php\Analysis\SsaFlags; use PhpAot\Php\Reflection; use PhpParser\Node; use PhpParser\Node\Expr; -use PhpParser\NodeAbstract; trait SsaPropOptimizer { @@ -329,7 +328,7 @@ trait SsaPropOptimizer if ($rightProp !== null) { // $ref = &$o->prop changes the slot to a reference. Earlier // optimized accesses remain safe only if the property is not - // touched again afterwards. + // touched again afterward. $events[] = ['kind' => 'danger', 'prop' => $rightProp]; $this->collectPropEventsInDynamicParts($node->expr, $objName, $events); } else { @@ -504,7 +503,7 @@ trait SsaPropOptimizer if (!$node instanceof Expr\PropertyFetch) { return; } - if ($node->name instanceof Node) { + if (!$node->name instanceof Node\Identifier) { $this->collectPropEvents($node->name, $objName, $events); } } @@ -572,10 +571,6 @@ trait SsaPropOptimizer return $node->name->toString(); } - if (is_string($node->name)) { - return $node->name; - } - return '*'; } @@ -628,7 +623,7 @@ trait SsaPropOptimizer return $this->getPropNameOfObj($node, $objName) === '*'; } - if ($node instanceof Expr\ArrayDimFetch && $node->var instanceof Node) { + if ($node instanceof Expr\ArrayDimFetch) { return $this->isDynamicPropWriteOfObj($node->var, $objName); }