From 185c5a75dc2ca42eb8a2074793e60ad7a65dbd4c Mon Sep 17 00:00:00 2001 From: tianfenghan Date: Thu, 8 Jan 2026 14:55:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20NAMESPACE=5FSEPARATOR=20?= =?UTF-8?q?=E5=B8=B8=E9=87=8F=E7=94=A8=E4=BA=8E=E7=BB=9F=E4=B8=80=E5=88=86?= =?UTF-8?q?=E9=9A=94=E7=AC=A6=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Php/Translator.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/Php/Translator.php b/src/Php/Translator.php index 1c8d5c80..c179c8ab 100644 --- a/src/Php/Translator.php +++ b/src/Php/Translator.php @@ -35,6 +35,7 @@ class Translator extends \PhpAot\Core\Translator const string EXPR_VARIABLE = 'Expr_Variable'; const string EXPR_NEW = 'Expr_New'; const string EXPR_ARRAY_DIM_FETCH = 'Expr_ArrayDimFetch'; + const string NAMESPACE_SEPARATOR = '__'; private string $phpxDir = '~/workspace/projects/phpx'; protected string $lang = 'PHP'; @@ -402,7 +403,7 @@ class Translator extends \PhpAot\Core\Translator $this->tmpVarIndex = 0; } - private function resetNamespace() + private function resetNamespace(): void { $this->useNamespaces = []; $this->useFunctions = []; @@ -411,14 +412,14 @@ class Translator extends \PhpAot\Core\Translator private function getFunctionName(Node $v): string { - $names[] = $this->parseIdentifier($v->name); + $names[] = strtolower($this->parseIdentifier($v->name)); if ($this->class) { $names[] = strtolower($this->class); } if ($this->namespace) { $names[] = $this->escapeNamespace($this->namespace); } - return implode('__', array_reverse($names)); + return implode(self::NAMESPACE_SEPARATOR, array_reverse($names)); } private function parseFunctionDeclaration(string $name, Node $v): FunctionDef @@ -1441,10 +1442,10 @@ class Translator extends \PhpAot\Core\Translator { $possibleFunctionNames = [$fname,]; if ($this->namespace) { - $possibleFunctionNames[] = $this->namespace . '__' . $fname; + $possibleFunctionNames[] = $this->namespace . self::NAMESPACE_SEPARATOR . $fname; } if (isset($this->useFunctions[$fname])) { - $possibleFunctionNames[] = $this->escapeNamespace($this->useFunctions[$fname]) . '__' . $fname; + $possibleFunctionNames[] = $this->escapeNamespace($this->useFunctions[$fname]) . self::NAMESPACE_SEPARATOR . $fname; } foreach($possibleFunctionNames as $name) { // 在预处理阶段检测到函数声明,但是未定义,说明在当前文件,但是顺序错误 @@ -2015,7 +2016,7 @@ class Translator extends \PhpAot\Core\Translator private function escapeNamespace(string $ns): string { - return str_replace('\\', '__', strtolower($ns)); + return str_replace('\\', self::NAMESPACE_SEPARATOR, strtolower($ns)); } private function unescapeVarName(string $name): string