fix(php): 修复数组维度赋值解析逻辑

- 简化了 isArrayDimFetch 条件判断,添加 isVarExpr 验证
- 重构了字符串类型检查逻辑,移除冗余条件判断
- 直接返回 parseAssignArrayDim 调用结果,简化代码流程
- 移除了不必要的变量赋值和条件分支
pull/1/head v0.0.4
韩天峰 5 months ago
parent c67c3dfea9
commit 90866a803b
  1. 12
      src/Php/CompilerBase.php

@ -1443,16 +1443,12 @@ class CompilerBase extends \PhpAot\Core\Translator
}
} elseif ($this->isPropertyFetch($left) and !$left->getAttribute('nativeProperty')) {
return $this->parseAssignPropertyFetch($left, $right);
} elseif ($this->isArrayDimFetch($left)) {
} elseif ($this->isArrayDimFetch($left) and $this->isVarExpr($left->var)) {
$tmp = $this->parseIdentifier($left->var);
if ($this->isVarExpr($left->var) and $this->getVarType($tmp) === self::TYPE_STR) {
if ($left->dim === null) {
$this->fatalError($left, 'Cannot use [] for strings');
}
}
if ($this->isVarExpr($left->var) and ($this->isVarExpr($right) or $this->isScalar($right))) {
return $this->parseAssignArrayDim($left, $right);
if ($this->getVarType($tmp) === self::TYPE_STR and $left->dim === null) {
$this->fatalError($left, 'Cannot use [] for strings');
}
return $this->parseAssignArrayDim($left, $right);
}
return $var . ' = ' . $this->convertExprType($expr, $this->detectExprType($left), $this->detectExprType($right));

Loading…
Cancel
Save