韩天峰
|
27060d9b87
|
refactor(php): 重构变量声明和全局变量处理逻辑
- 将 localVarDecl 重命名为 scopeVarDecl 并更新所有相关调用
- 移除旧的 getStaticVarName 方法,使用新的 escapeStaticVar 方法
- 添加 parseSuperGlobalVar 方法来处理超全局变量
- 添加 hasArgument 和 addScopeGlobalVar 等辅助方法
- 更新 hasVar 方法以支持作用域全局变量检查
- 实现对 $GLOBALS 数组访问的支持,将其转换为相应变量
- 重构全局变量初始化和清理逻辑,使用新的命名规则
- 添加函数上下文中的全局变量数组存储
- 更新模板文件中的全局变量引用方式
|
5 months ago |
韩天峰
|
67bbfb8852
|
fix(php): 修复AOT编译器中isset操作和属性获取问题
- 添加变量存在性检查,防止AOT编译器操作未定义变量
- 优化单属性读取逻辑,支持原生属性访问
- 移除不必要的数组反转操作提升性能
- 修复属性映射偏移量计算错误,统一加减1024补偿值
- 更新示例代码中的静态变量初始值
|
5 months ago |
韩天峰
|
e508b6de4f
|
refactor(php): 重构编译器内部函数和类管理机制
- 移除 CompilerTest 单例模式,改为 create 方法创建实例
- 将 nativeFunctions 重命名为 functions 并统一使用 addFunction/hasFunction/getFunction 方法管理
- 将 nativeConstants 重命名为 constants 并统一使用相应方法管理
- 将 nativeClasses 相关方法重构为 getClass/hasClass 等统一命名方式
- 添加 ConstantDef 实体类用于常量定义管理
- 优化函数查找逻辑,使用 escapeFunction 进行名称转换
- 重构预处理器中的函数注册逻辑
- 更新模板文件中的变量引用以匹配新的属性命名
- 添加重复函数、类的测试用例并移除旧的错误测试文件
|
5 months ago |
韩天峰
|
1b8a2fb19d
|
refactor(generator): 重构类属性初始化逻辑
- 将类属性初始化代码提取到独立的 genClassPropertyInit 方法中
- 移除模板文件中的复杂 PHP 循环和条件逻辑
- 使用数组属性计数来决定是否需要构造函数
- 修复属性定义解析中构造函数标记的逻辑位置
|
5 months ago |
韩天峰
|
7989c551bb
|
fix(closure): 修复闭包生成器中的变量捕获逻辑
- 修正 ClosureGenerator.php 中的变量捕获操作符,从值传递改为引用传递
- 更新 ConstantDef 类构造函数以支持数组表达式存储
- 修改模板文件中的类定义检查逻辑,使用 empty 函数替代布尔判断
- 重构类常量生成方法,将 genUpdateClassConstants 重命名为 genClassArrayConstants
- 添加 php_get_create_object_fn 辅助函数以正确获取对象创建函数
- 优化类常量定义解析,支持数组类型的常量表达式处理
|
5 months ago |
韩天峰
|
ad3bd659b0
|
refactor(template): 重构类常量生成逻辑
- 将类常量生成代码从模板文件移动到 Translator 类中
- 创建 genUpdateClassConstants 方法统一处理数组类型常量生成
- 使用新方法替换原有的 PHP 模板循环结构
- 简化 extension.cc.php 模板中的常量定义代码
- 提高代码可维护性和复用性
|
5 months ago |
韩天峰
|
68a9a782e8
|
feat(extension): 添加类构造器和属性默认值支持
- 在扩展模板中添加类构造器创建对象函数声明
- 实现类构造器中的属性初始化逻辑
- 将静态属性列表重命名为默认静态属性列表
- 添加类属性默认值列表用于存储实例属性初始值
- 更新类信息数组结构添加classDef引用
- 移除构造函数检查逻辑并优化方法包装生成
- 在类包装生成中添加属性默认值处理逻辑
- 添加测试用例验证可空类型属性功能
|
5 months ago |
韩天峰
|
f2647ccbba
|
feat(php): 支持类常量数组类型的编译处理
- 在 CompilerBase.php 中添加对类常量数组类型的判断和处理逻辑
- 在 extension.cc.php 模板中增加类数组常量的声明、初始化和清理代码生成
- 修改 Translator.php 中的类常量解析逻辑以支持类型推断
- 添加对未明确声明类型的类常量进行自动类型检测
- 为类数组常量生成对应的外部变量声明
- 移除不再需要的字面字符串数组外部声明
|
5 months ago |
韩天峰
|
fed0d7c2a0
|
feat(compiler): 添加属性映射支持用于PHP编译器
- 添加PROP_MAP常量和相关属性映射数据结构
- 实现getPropertyId方法用于获取属性标识符
- 更新getPropertyOffset方法以使用新的属性映射机制
- 修改静态属性查找逻辑以返回完整命名空间类名
- 在模板文件中添加属性映射数组声明和初始化
- 更新外部函数声明以包含属性获取功能
- 移除旧的属性偏移量预定义方式,改用统一的映射表管理
- 添加完整的属性访问测试用例验证功能正确性
|
6 months ago |
韩天峰
|
746dc23680
|
feat(core): 添加进程标题设置和获取功能
- 在编译器中添加了 php_cli_process_title.c 和 ps_title.c 源文件
- 在扩展模板中添加了头文件包含和函数注册
- 实现了 cli_set_process_title 和 cli_get_process_title 函数
- 集成了跨平台的进程标题修改功能
- 添加了命令行参数保存和清理机制
- 提供了完整的错误处理和状态码返回
|
6 months ago |
韩天峰
|
d0d66a0982
|
feat(compiler): 实现对 static 关键字的支持
- 修改 getNativeStaticMethod 方法为 getNativeMethod,增加继承链方法查找逻辑
- 添加对 static::class 和 self::class 的差异化处理
- 实现静态编译时对 static 调用的正确解析和转换
- 增加对 late static binding 的支持
- 添加相关辅助函数 php_get_called_class 和 php_get_called_ce
- 更新测试用例验证 static 关键字功能正确性
|
6 months ago |
韩天峰
|
4d0a44fdbd
|
feat(compiler): 实现静态属性支持和构造函数功能
- 添加静态属性列表存储和初始化机制
- 实现 self 关键字解析为带命名空间的类名
- 在扩展模板中添加静态属性设置代码生成
- 支持构造函数的参数传递和属性初始化
- 过滤抽象方法避免不必要的解析处理
- 添加 bool 类型和构造函数相关的测试用例
|
6 months ago |
韩天峰
|
7292635b3d
|
refactor(php): 重构PHP编译器代码结构
- 将字符串转义相关方法从CompilerBase移至Utils trait中
- 将括号检查和闭合表达式验证逻辑从CompilerBase移至Utils trait
- 修改genCharPtr方法支持字符串转义参数
- 添加genRawStr方法用于生成原始字符串字面量
- 在ClosureGenerator中正确保存和恢复对象状态
- 修复类名定义中的命名空间分隔符问题
- 更新模板文件中属性偏移量生成方式
- 修复内存分配中的类型转换问题
|
6 months ago |
韩天峰
|
b091d2dad8
|
Revert "code format"
This reverts commit b6d64407f3.
|
6 months ago |
韩天峰
|
b6d64407f3
|
code format
|
6 months ago |
韩天峰
|
24ea4d9806
|
refactor(php): 优化模块名称处理逻辑
- 将直接访问 targetName 属性改为使用 getModuleName 方法
- 移除数字开头目标名的预处理逻辑
- 新增 getModuleName 方法处理数字开头的模块名
- 统一模块入口函数中的名称引用方式
|
6 months ago |
韩天峰
|
9c51551567
|
refactor(php): 重构编译器基础类中的类和函数指针获取方法
- 将 getClassEntryPtr 方法重命名为 getClassId 并修改返回值为整数ID
- 将 getFuncPtr 方法重命名为 getFuncId 并修改返回值为整数ID
- 添加新的 getMethodPtr 方法用于获取方法指针
- 重新实现 getClassEntryPtr 和 getFuncPtr 方法,基于新的ID获取方法
- 更新方法调用逻辑以使用新的方法指针机制
- 在C++模板中添加 php_get_method 函数实现
- 更新PHP AOT辅助头文件中的函数声明
- 优化Reflection类中的反射异常处理和参数类型引用
|
7 months ago |
韩天峰
|
7e5b6ef045
|
fix(const): 修复命名空间常量定义和引用问题
- 在常量名称前添加命名空间前缀以支持命名空间常量
- 将常量信息存储结构扩展为包含命名空间和名称字段
- 使用转义后的命名空间名称作为常量查找键值
- 更新模板中常量遍历变量名以避免混淆
- 修复常量定义时的字符串转义处理
- 添加命名空间常量测试用例验证功能
- 实现参数信息存根文件名生成方法
|
7 months ago |
韩天峰
|
0c02958589
|
feat(php): 添加复杂命名空间规则支持并优化函数名转义
- 实现复杂命名空间组合规则,支持 use foo\bar; bar\fn() 形式的调用
- 新增 escapeZendFnName 方法用于函数名转义处理
- 使用统一的函数名转义机制替换模板中的硬编码逻辑
- 移除函数定义中的静态关键字以提高灵活性
|
7 months ago |
韩天峰
|
9118fc4e33
|
feat(compiler): 支持函数别名和命名空间功能
- 实现了函数导入别名功能,解决命名冲突问题
- 添加了命名空间支持,包括嵌套命名空间解析
- 更新了函数定义实体类以支持命名空间属性
- 修改了编译器基础类中的函数解析逻辑
- 调整了扩展模板中函数注册的命名空间处理
- 优化了预处理器中的命名空间定义逻辑
- 完善了翻译器中函数包装器的命名空间支持
- 新增了函数别名查找和解析功能
- 添加了相关测试用例验证功能正确性
|
7 months ago |
韩天峰
|
ca4a34204c
|
feat(compiler): 添加对 main 函数的特殊支持和参数验证
- 在编译器中实现 main 函数的特殊处理逻辑
- 验证 main 函数的参数必须为 (int $argc, array $argv) 格式
- 确保 main 函数返回类型为 void
- 在扩展模板中添加 main 函数调用支持
- 根据构建模式条件编译模块入口点
- 移除旧的静态 main 函数调用方式
- 更新示例项目以使用正确的 main 函数签名
|
7 months ago |
韩天峰
|
288021d16c
|
feat(compiler): 添加对孤立代码的检测和错误处理
- 在 CompilerBase 中添加 foundStrayCode 方法用于报告孤立代码错误
- 在 Preprocessor 中为 Stmt_Expression 类型添加孤立代码检测
- 防止在扩展模式下生成名为 main 的函数
- 添加 empty-2.phpt 测试用例验证空值合并操作符功能
|
7 months ago |
韩天峰
|
8257f8a1c4
|
feat(generator): 添加常量符号注册功能
- 启用数组和对象常量定义支持
- 实现符号注册函数自动生成
- 添加 register_symbols 扩展模板支持
- 优化常量解析跳过复杂类型处理
- 新增模块符号注册函数匹配逻辑
|
7 months ago |
韩天峰
|
6dd8d2d6bc
|
refactor(Php): 优化字符串字面量处理和函数调用优化
- 提取字符串字面量处理逻辑到独立方法 getLiteralString
- 将 C++ 接口参数类型从 const char* 改为 const php::String&
- 修改字面量字符串数组类型从 php::Var 为 php::Str
- 添加 function_exists 函数调用的优化处理
- 更新头文件中的函数声明和内联函数参数类型
- 调整示例代码中的性能测试部分注释状态
|
7 months ago |
韩天峰
|
6632629f58
|
feat(extension): 添加请求生命周期钩子函数支持
- 在扩展模板中添加 PHP_RINIT 和 PHP_RSHUTDOWN 函数实现
- 配置模块入口结构以启用请求初始化和关闭回调
- 更新主程序初始化逻辑以使用模块生命周期函数
- 实现请求启动和关闭时的应用程序初始化清理功能
- 解决 PHP 内部字符串处理的双释放问题
- 简化示例代码以演示全局变量访问功能
|
7 months ago |
韩天峰
|
38110f67d5
|
refactor(php): 重构PHP到C++编译器实现细节
- 更新PHP CS Fixer配置中的类属性分离规则
- 简化ArgInfo、ClassDef、ClassLikeDef等数据结构定义
- 重命名CLASS_ENTRY_MAP为CLASS_MAP并更新相关引用
- 移除多余变量声明并优化全局变量处理逻辑
- 实现超级全局变量检测和初始化功能
- 添加对$GLOBALS数组访问的支持
- 优化函数调用代码生成逻辑
- 添加全局变量测试用例验证功能
- 清理无用常量和变量声明简化代码结构
|
7 months ago |
韩天峰
|
0e4a332519
|
feat(php): 添加函数指针映射功能支持
- 新增 FUNC_MAP 常量用于存储函数映射
- 添加 funcIndex 和 funcMap 属性用于函数索引管理
- 实现 getFuncPtr 方法获取函数指针
- 修改函数调用逻辑使用新的函数指针机制
- 在扩展模板中添加函数映射数组声明
- 添加 php_get_func 外部函数声明和实现
- 更新翻译器生成相应的外部函数声明
|
7 months ago |
韩天峰
|
100f2e22cb
|
代码格式化,命名空间处理
|
7 months ago |
韩天峰
|
8c20fd18c8
|
refactor(core): 优化代码结构和性能
- 调整 import 语句顺序,将 Node 相关引入规范化
- 规范化字符串拼接操作,统一使用点号连接
- 统一比较运算符写法,调整变量与常量的比较顺序
- 移除多余空行和分号,精简代码结构
- 标准化缩进和代码格式,提升可读性
- 优化循环和条件判断逻辑,使用前置递增递减
- 修复类定义和方法定义的格式一致性
- 更新依赖管理方式,优化编译器配置加载
|
7 months ago |
韩天峰
|
a6a06ca859
|
feat(translator): 增强PHP到C++编译器功能
- 在ClassLikeDef中添加getNamespacedName方法的symbolic参数支持
- 简化compiler.php中的文件扫描逻辑并移除冗余代码
- 在CompilerBase中添加函数定义存储数组和相关属性
- 更新错误处理方法结构并分离基本错误和致命错误处理
- 在extension.cc模板中移除类信息函数声明并添加函数入口表
- 修改属性偏移获取逻辑以支持非符号化命名空间
- 添加嵌入式模块获取函数实现
- 重构gen_stub.php中的类和函数信息生成逻辑
- 移除全局变量genClass并更新命令行选项处理
- 重命名examples/class/test.php为examples/appx/test.php并添加测试常量和函数
- 在Translator中添加PHP源文件和arginfo头文件数组管理
- 更新目标名称验证以检查C++保留关键字
- 实现getFiles方法统一文件路径处理逻辑
- 添加函数包装器生成功能和类注册函数提取
- 优化类CE列表生成逻辑并修复头文件包含顺序问题
- 重构存根文件生成流程并改进错误报告机制
|
7 months ago |
韩天峰
|
ea77b6d746
|
feat(compiler): 添加编译模式支持和目标名称配置
- 实现二进制文件和PHP扩展两种编译模式
- 添加目标名称配置功能
- 支持通过命令行参数指定编译模式
- 更新编译选项以支持不同的构建模式
- 添加main函数存在性检查确保二进制构建完整性
- 修改链接过程以支持共享库生成
- 添加示例文件array_append.php和ref.php用于测试
- 更新帮助文档和命令行参数说明
|
7 months ago |
韩天峰
|
0f3ccb98cd
|
feat(php): 添加属性偏移量支持和性能优化
- 引入 Node 类型导入并添加 isIdExpr 方法用于标识符检查
- 新增 PROPERTY_OFFSETS 常量和 getPropertyOffset 方法用于属性偏移量计算
- 重构命名空间相关方法,统一使用 getNativeName 替代 getNativeFunctionName
- 优化属性获取逻辑,在特定条件下使用属性偏移量提升性能
- 在模板中生成属性偏移量声明和初始化代码
- 添加性能测试脚本 prof.php 和性能分析配置调整
|
7 months ago |
韩天峰
|
689b59bbda
|
处理继承或实现内置类和接口
|
8 months ago |
韩天峰
|
6ff687e1da
|
Interface,ce 依赖关系处理,排序
|
8 months ago |
韩天峰
|
f8100988c4
|
update mixed
|
8 months ago |
韩天峰
|
8b0c3d2b72
|
refactor(php): 重构PHP编译器基础功能并优化代码结构
- 移除不支持函数列表的硬编码定义
- 添加对不支持函数调用的运行时检查和错误报告
- 简化静态属性和类常量解析中的self关键字处理逻辑
- 修复类方法调用中self关键字的替换逻辑
- 将扩展模块入口声明从static改为全局作用域
- 重写gen_stub.php脚本的主函数结构和命令行参数处理
- 添加类信息和函数信息的独立生成选项
- 优化桩文件生成时的跳过提示输出
- 重构翻译器中的类解析方法实现
- 更新不支持函数列表包含更多动态函数
|
8 months ago |
韩天峰
|
f3944a5259
|
refactor(compiler): 重构PHP到C++编译器实现
- 修改编译流程,添加对象文件路径管理功能
- 实现缓存检查机制,跳过已存在的编译文件
- 重命名MethodDef中的def属性为functionDef
- 提取表达式类型转换逻辑到独立方法convertExprFromType
- 添加扩展模板文件extension.cc.php,使用模板渲染替代手动代码生成
- 修改main.cc文件结构,使用模块注册方式替代函数注册
- 更新编译参数,添加-Wall编译选项
- 实现方法调用参数传递的动态构建机制
- 优化全局变量初始化和清理函数的实现
|
8 months ago |