refactor(Php): 优化Translator类中的方法以提高代码可读性

- 添加getRegisterClassFunction方法用于生成类注册函数名
- 添加getClassCe方法用于生成类条目名称
- 添加getParentClassCe方法用于获取父类条目名称
- 使用新方法替换原有的硬编码字符串拼接
- 简化类定义中的变量命名和逻辑结构
pull/1/head
韩天峰 8 months ago
parent 29bd55ccd3
commit d21e7c13bf
  1. 38
      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);

Loading…
Cancel
Save