fix(php): 修复字符串偏移设置功能

- 移除了调试用的 var_dump 语句
- 在数组维度存储解析中正确管理 inAssignExpr 状态
- 修正测试文件中的测试名称描述
pull/1/head
韩天峰 7 months ago
parent 2d81a3975d
commit a39a2e389a
  1. 4
      src/Php/CompilerBase.php
  2. 2
      tests/aot/str-offset-set.phpt

@ -1081,7 +1081,6 @@ class CompilerBase extends \PhpAot\Core\Translator
$var = $this->parsePropertyFetch($left, true);
} elseif ($this->isArrayDimFetch($left)) {
$tmp = $this->parseIdentifier($left->var);
var_dump($tmp);
if ($this->isVarExpr($left->var) and $this->getVarType($tmp) === self::TYPE_STR) {
if ($left->dim === null) {
$this->fatalError($left, 'Cannot use [] for strings');
@ -1720,7 +1719,10 @@ class CompilerBase extends \PhpAot\Core\Translator
protected function parseArrayDimStore($array, $dim, $var): string
{
$oriInAssignExpr = $this->inAssignExpr;
$this->inAssignExpr = true;
$id = $this->parseIdentifier($array);
$this->inAssignExpr = $oriInAssignExpr;
return $id . '.offsetSet(' . $this->trimBrackets($dim) . ', ' . $this->trimBrackets($var) . ')';
}

@ -1,5 +1,5 @@
--TEST--
strlen
string offset set
--FILE--
<?php
$s1 = "hello world";

Loading…
Cancel
Save