函数与类生成

本章聚焦两个最频繁的发射动作:genFunctionWrapper()(函数/方法 → C++ 函数)与 genClassWrapper()(类/接口/枚举 → C++ 类与 zend_class_entry 注册)。

Sources: src/Translator.php

函数生成

genFunctionDeclarations() 为每个 FunctionDef 生成前向声明,规则包括:

Sources: src/Translator.php

类生成

genClassWrapper() 为每个 ClassDef / InterfaceDef 生成:

  1. C++ 类结构与属性布局;
  2. 静态属性默认值(php::setStaticProperty);
  3. create_object 钩子与属性处理器安装(genClassPropertyInit());
  4. 数组常量(genClassArrayConstants())。

属性初始化分两种情况(src/Translator.php):

Sources: src/Translator.php · src/Preprocessor.php

类注册排序

genClassCeList()marcj/topsort 按继承依赖拓扑排序生成 zend_class_entry 注册顺序,确保父类先于子类注册;内置类/接口(不在符号表中)直接加入排序而不参与依赖解析。

Sources: src/Translator.php

相关阅读