From d21e7c13bf1b88f675dc05f995e15b323a31f294 Mon Sep 17 00:00:00 2001 From: tianfenghan Date: Mon, 12 Jan 2026 17:41:48 +0800 Subject: [PATCH] =?UTF-8?q?refactor(Php):=20=E4=BC=98=E5=8C=96Translator?= =?UTF-8?q?=E7=B1=BB=E4=B8=AD=E7=9A=84=E6=96=B9=E6=B3=95=E4=BB=A5=E6=8F=90?= =?UTF-8?q?=E9=AB=98=E4=BB=A3=E7=A0=81=E5=8F=AF=E8=AF=BB=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加getRegisterClassFunction方法用于生成类注册函数名 - 添加getClassCe方法用于生成类条目名称 - 添加getParentClassCe方法用于获取父类条目名称 - 使用新方法替换原有的硬编码字符串拼接 - 简化类定义中的变量命名和逻辑结构 --- src/Php/Translator.php | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/src/Php/Translator.php b/src/Php/Translator.php index 726f50a0..969df148 100644 --- a/src/Php/Translator.php +++ b/src/Php/Translator.php @@ -106,6 +106,24 @@ class Translator extends Preprocessor } } + protected function getRegisterClassFunction(string $name): string + { + return self::PREFIX . 'register_class_' . $name; + } + + protected function getClassCe(ClassDef $classDef): string + { + return self::PREFIX . 'class_entry_' . $classDef->getNamespacedName(); + } + + protected function getParentClassCe(ClassDef $classDef): string + { + if (!$classDef->extends) { + return ''; + } + return self::PREFIX . 'class_entry_' . $classDef->extends; + } + protected function doConvert(string $phpCode): string { $this->climate->info('convert: ' . $this->file); @@ -156,8 +174,8 @@ class Translator extends Preprocessor $parentName = ''; $param = ''; } - $cppCode .= 'zend_class_entry *' . self::PREFIX . 'register_class_' . $name . '(' . $parentName . ') {' . PHP_EOL; - $cppCode .= $this->getIndent() . 'return register_class_' . $name . '(' . $param . ');' . PHP_EOL; + $cppCode .= 'zend_class_entry *' . $this->getRegisterClassFunction($name) . '(' . $parentName . ') {' . PHP_EOL; + $cppCode .= $this->getIndent() . 'return ' . $this->getRegisterClassFunction($name) . '(' . $param . ');' . PHP_EOL; $cppCode .= '}' . PHP_EOL . PHP_EOL; } $cppCode .= PHP_EOL; @@ -216,16 +234,16 @@ class Translator extends Preprocessor // 类定义 $lines[] = $this->getIndent() . '// class entries'; foreach ($this->classes as $classDef) { - $lines[] = $this->getIndent() . 'zend_class_entry *' . self::PREFIX . 'class_entry_' . $classDef->getNamespacedName() . ';'; + $lines[] = $this->getIndent() . 'zend_class_entry *' . $this->getClassCe($classDef) . ';'; } foreach ($this->classes as $classDef) { $name = $classDef->getNamespacedName(); if ($classDef->extends) { - $parentName = 'zend_class_entry *parent_ce'; + $parentCe = 'zend_class_entry *parent_ce'; } else { - $parentName = ''; + $parentCe = ''; } - $lines[] = 'extern zend_class_entry *' . self::PREFIX . 'register_class_' . $name . '(' . $parentName . ');'; + $lines[] = 'extern zend_class_entry *' . $this->getRegisterClassFunction($name) . '(' . $parentCe . ');'; } $code .= implode(PHP_EOL, $lines) . PHP_EOL; @@ -262,12 +280,8 @@ class Translator extends Preprocessor $lines[] = $this->getIndent() . '// class entries'; foreach ($this->classes as $classDef) { $name = $classDef->getNamespacedName(); - if ($classDef->extends) { - $parentName = self::PREFIX . 'class_entry_' . $classDef->extends; - } else { - $parentName = ''; - } - $lines[] = $this->getIndent() . self::PREFIX . 'class_entry_' . $name . ' = ' . self::PREFIX . 'register_class_' . $name . '(' . $parentName . ');'; + $parentCe = $this->getParentClassCe($classDef); + $lines[] = $this->getIndent() . $this->getClassCe($classDef) . ' = ' . $this->getRegisterClassFunction($name) . '(' . $parentCe . ');'; } $this->indentLevel--; $code .= $this->genFunction(self::PREFIX . 'init_global_vars', 'void', [], $lines);