Yurun
bbc9ab61a4
fix(tests): 更新测试预期与改进跨平台兼容性
2 months ago
韩天峰
34e112d697
feat(php): 添加类构造函数初始化和清理功能
...
- 在ClassDef中添加ctorInit、ctorClean属性和propertyContext
- 修改编译器在对象创建时执行属性初始化代码
- 添加对默认数组属性的支持和测试
- 实现属性上下文管理以正确处理构造函数逻辑
- 更新预处理器和翻译器以支持新的属性处理机制
- 添加property_exists函数的相关测试用例
5 months ago
韩天峰
fbb68ad689
feat(constants): add constant definition validation and test coverage
...
- Add isValidDefineName method to validate constant names according to PHP rules
- Implement validation check in define function call processing
- Add fatal error handling for invalid constant names
- Create comprehensive test case covering constant definition and usage scenarios
5 months ago
韩天峰
28de6c86a4
fix(php): 解决动态调用和方法重写的相关问题
...
- 添加了动态调用时的作用域切换代码生成
- 修复了 MethodCall 中的动态调用检测逻辑,区分魔法方法调用
- 为类方法定义添加了 hasDynamicCall 属性标识
- 实现了类继承链中私有方法重写的错误检查
- 添加了多个测试用例验证字符串连接性能和动态调用行为
5 months ago
韩天峰
e7db0c7348
fix(php): 修复箭头函数变量作用域和二元运算符解析问题
...
- 添加箭头函数基本功能测试用例验证闭包行为
- 修复二元运算符解析时变量存在性检查逻辑
- 解决全局变量在箭头函数中的访问问题
- 修复数组解包空数组导致断言失败的bug
- 改进变量名转义和局部变量检测机制
5 months ago
韩天峰
095f9e8c66
feat(php): 添加类定义管理和属性访问优化功能
...
- 实现 addClass 方法用于添加类定义到编译器
- 优化 hasNativeClass 和 getClassDef 方法使用 escapeClass 处理类名
- 更新 escapeClass 方法支持反斜杠替换为下划线并去除首尾反斜杠
- 重构 getPropertyIdentifier 方法简化属性标识符获取逻辑
- 新增 findNativeProperty 方法实现原生属性查找功能
- 添加对私有、受保护和公共属性的访问权限检查
- 支持继承链中属性的向上查找功能
- 为 get_class_vars 函数添加完整的测试用例覆盖
6 months ago
韩天峰
257616d571
refactor(compiler): 优化方法调用和参数解析逻辑
...
- 移除编译器中无用的原生函数检查逻辑
- 更新反射参数检查以支持类方法参数引用
- 添加类型化对象的方法调用处理机制
- 实现匿名类实例继承相关功能
- 修复数组元素递增递减操作处理
- 优化ZipArchive等扩展函数的引用参数处理
- 添加私有属性名称解混淆测试用例
- 扩展反射类以支持类方法参数获取
7 months ago
韩天峰
a1d74df985
feat(compiler): 支持匿名类静态访问方法和属性
...
- 添加匿名类索引计数器用于生成唯一类名
- 实现对象类型获取功能以支持动态类型解析
- 优化静态调用解析逻辑以处理变量表达式情况
- 添加测试用例验证匿名类静态访问功能
7 months ago
韩天峰
35a81376a1
test(anonymous): 添加匿名类相关测试用例
...
- 新增 001.phpt 测试基础匿名类声明功能
- 新增 002.phpt 测试匿名类继承和实现接口功能
- 新增 003.phpt 测试匿名类重复使用场景
- 新增 004.phpt 测试匿名类继承机制
- 修改编译器基类中类名获取逻辑,支持反斜杠开头的命名空间类名
- 修复函数中声明类的错误检查逻辑
- 改进变量检测逻辑以避免未定义变量错误
- 修复类定义代码中的数组初始化逻辑
- 为类名添加反斜杠前缀以确保正确引用
- 添加静态调用注释以改善调试信息
- 调整枚举测试文件中函数位置以符合预期结构
7 months ago
韩天峰
a72752828f
feat(php): 添加对 match 表达式的支持
...
- 实现了 match 表达式的解析和编译功能
- 添加了多个测试用例验证 match 表达式的基本功能
- 包括基本匹配、默认情况、多条件匹配等功能测试
- 实现了 match 表达式的错误处理机制
- 添加了对重复条件和尾随逗号的支持测试
- 更新了 AST 节点类型检查以支持 Match_ 表达式
- 在常量列表中添加 bool 类型支持
7 months ago
韩天峰
46e15ca247
feat(compiler): 添加对 Match 表达式和枚举的支持
...
- 在 CompilerBase 中添加了对 Expr_Match 节点的解析支持
- 修改 parseTernary 方法参数类型为 Node\Expr\Ternary
- 添加了 parseMatch 方法用于处理 Match 表达式
- 在 Preprocessor 中添加对 Stmt_Enum 和 Stmt_EnumCase 的预处理支持
- 扩展 prepareClass 方法以支持枚举类型的处理
- 在 Translator 中添加对 Stmt_Enum 的翻译支持
- 修改 parseClass 方法以正确处理枚举定义
- 添加测试文件 closure_016.phpt 和 closure_017.phpt 验证闭包功能
- 添加枚举示例文件 enum1.php 展示枚举用法
7 months ago
韩天峰
bd06dcf0a5
fix(compiler): 修复返回语句缺少分号及未定义变量错误提示问题
...
- 修复了编译器中return语句缺少分号的问题
- 修正了未定义变量错误提示中的变量名显示格式
- 统一使用errorUndefinedVariable方法处理闭包中未定义变量的情况
- 添加了对closure_011和closure_013测试用例的支持
7 months ago
韩天峰
67427f342d
feat(closure): 添加闭包功能支持并完善相关测试用例
...
- 添加了嵌套lambda表达式的支持,实现类中的闭包嵌套功能
- 实现了preg_replace_callback中lambda表达式的使用场景
- 支持在lambda内部使用静态变量的功能
- 完善了闭包自调用的实现逻辑
- 添加了四个新的闭包测试用例(closure_007-010)
- 在编译器基类中增加了inClosure状态标识
- 修复了return语句在闭包中的处理逻辑
- 更新了闭包函数体的返回值处理方式
7 months ago
韩天峰
288f1dddef
feat(closure): 实现闭包功能支持类内部方法访问$this
...
- 添加closure_005.phpt和closure_006.phpt测试用例验证闭包功能
- 修改CompilerBase.php中函数定义相关属性为可空类型并添加methodDef
- 实现resetMethod方法重置方法定义状态
- 优化函数参数和局部变量处理逻辑
- 添加genLocalVarDecl和genReturnCode方法生成变量声明和返回代码
- 改进闭包解析逻辑支持返回类型声明
- 更新newClosure调用传递this_参数支持类内闭包访问实例
- 重构MethodDef构造函数移除FunctionDef参数依赖
7 months ago
韩天峰
51939af82f
test(closures): 添加闭包词法变量测试用例并修复引用转换逻辑
...
- 添加 closure_003.phpt 测试本地作用域词法变量的闭包功能
- 添加 closure_004.phpt 测试作用域生命周期词法变量的闭包功能
- 修改 convertToRef 方法修复原生类型变量引用转换检查逻辑
- 更新编译器基类中的引用转换实现以正确处理变量类型检查
7 months ago
韩天峰
b3dc15a55f
feat(closures): 实现闭包功能支持
...
- 添加了闭包类型常量 php::Args
- 实现了原生类型检查方法 isNativeType
- 添加了引用转换方法 convertToRef 处理变量引用
- 修改闭包函数签名使用 php::Args 类型
- 实现了闭包 use 子句中引用传递的支持
- 添加了两个闭包测试用例验证基本功能和引用传递
7 months ago
韩天峰
752767012f
feat(compiler): 添加对goto语句的支持
...
- 引入OP_NOP常量用于处理标签后的空操作
- 修改语句解析循环以跟踪最后一条语句
- 在标签语句后添加空操作防止代码优化问题
- 添加jump02和jump03测试用例验证goto功能
- 创建mv.php脚本用于文件重命名和git添加操作
7 months ago
韩天峰
82e13b62f1
test(increment): 添加字符串和类型递增递减操作测试
...
- 添加字符串递增递减功能测试用例
- 添加各种数据类型递增递减操作测试
- 添加goto跳转语句基础功能测试
- 验证不同字符串值的递增递减行为
- 测试数组对象资源等类型的递增递减错误处理
- 包含空值布尔值数字等基本类型的操作验证
7 months ago
韩天峰
e0a4e2f977
feat(compiler): 添加空合并赋值运算符支持并优化变量检查
...
- 实现了 ??= 运算符的解析和编译功能
- 添加了变量存在性检查的改进实现
- 增加了左值有效性验证确保赋值操作合法
- 更新了测试用例覆盖空合并赋值的各种场景
- 修复了 stray code 检查的错误定位问题
- 在编译器基类中增加了 isset 和 empty 操作常量定义
7 months ago
韩天峰
9118fc4e33
feat(compiler): 支持函数别名和命名空间功能
...
- 实现了函数导入别名功能,解决命名冲突问题
- 添加了命名空间支持,包括嵌套命名空间解析
- 更新了函数定义实体类以支持命名空间属性
- 修改了编译器基础类中的函数解析逻辑
- 调整了扩展模板中函数注册的命名空间处理
- 优化了预处理器中的命名空间定义逻辑
- 完善了翻译器中函数包装器的命名空间支持
- 新增了函数别名查找和解析功能
- 添加了相关测试用例验证功能正确性
7 months ago
韩天峰
3959fee828
test(zend): 添加heredoc语法和半保留字测试用例
...
- 添加GH-16630 UAF漏洞相关编码转换和heredoc测试
- 添加基本heredoc语法测试用例
- 添加二进制heredoc语法测试用例
- 添加变量替换相关heredoc测试用例
- 添加复杂变量替换相关heredoc测试用例
- 添加半保留字作为静态类方法的测试用例
- 添加公共测试辅助文件nowdoc.inc
- 添加示例代码文件lv3_prop.php和prop.php
7 months ago
韩天峰
166f53f28e
fix(php): 修复编译器中的变量声明和属性获取问题
...
- 在循环中为键变量和值变量添加本地变量声明检查
- 确保变量在使用前已正确定义
- 添加对属性获取表达式的处理支持
- 为递增递减操作添加新的测试用例
- 包括64位平台整数溢出处理的测试
- 添加布尔类型递增递减异常处理测试
- 添加引用属性递增递减功能测试
7 months ago
韩天峰
04f265ae24
全局变量
8 months ago
韩天峰
4dd4b61218
添加更多單元測試
8 months ago
韩天峰
4f095c301d
添加更多單元測試
8 months ago
韩天峰
c1d759de57
动态函数调用语法 [2]
8 months ago
韩天峰
fb10132b6c
动态函数调用语法
8 months ago
韩天峰
739152ba14
支持语法 **=
8 months ago
韩天峰
0dbb12812d
数值系统 单元测试
8 months ago
韩天峰
204908f6e9
数组 单元测试
8 months ago