韩天峰
|
cce6967acf
|
fix(php): 修复静态属性晚绑定支持问题
- 修改 CompilerBase.php 中的静态属性处理逻辑,正确区分 self 和 static 关键字
- 为 native-property-full-name.php 添加 writeStatic 测试方法
- 更新 NativePropertyTest.php 中的编译方法返回值类型和测试用例
- 添加静态属性晚绑定功能的完整测试用例 static-prop-late-static-binding.phpt
|
2 months ago |
韩天峰
|
91675ed366
|
feat(php): 添加除零检查和改进原生属性访问功能
- 添加对字面量除零、模零、赋值除零和赋值模零操作的编译时检查
- 实现对整数、浮点数和字符串类型的零值检测
- 为 AssignOpTrait 和 BinaryOpTrait 添加 guardLiteralDivisionByZero 方法
- 改进原生属性访问的类名解析,使用完整的类名进行查找
- 支持 static 关键字作为类名解析的一部分
- 添加 isSameClassName 和 isSameOrSubclassOf 辅助方法用于类继承关系判断
- 实现受保护属性访问权限控制的 canAccessProtectedProperty 方法
- 添加多个测试文件验证除零检查和原生属性访问功能
- 创建 NativePropertyTest 和 OperatorTest 测试类验证相关功能
|
2 months ago |
韩天峰
|
7e52d51b5b
|
fix(php): 解决除零运算错误处理问题
- 添加了对除法和取模运算中零值检测的统一处理
- 当遇到除零或模零运算时抛出致命错误而不是返回NaN
- 移除了旧的零除法返回NaN的逻辑
- 统一了除法和取模运算的零值检查条件
|
2 months ago |
Yurun
|
8e5b9e8076
|
fix(compiler)): 修复除以零MSVC编译不通过
|
2 months ago |
Yurun
|
30ef9352a2
|
fix(const): 修复常量名与变量名冲突问题、常量名大小写敏感问题
|
2 months ago |
Yurun
|
a365474674
|
fix(tests): 修复 Windows 测试弹出 UAC
|
2 months ago |
Yurun
|
f2e063b41d
|
fix(compiler): 修复命名空间内类名解析及use别名查找
|
2 months ago |
韩天峰
|
19164e92bc
|
docs(compiler): 添加AOT编译速度优化研究文档并完善测试用例
- 添加AOT编译速度优化研究笔记,涵盖瓶颈分析和优化方向
- 新增构造函数抛异常析构函数调用测试用例
- 添加混合数组默认参数函数测试用例
- 补充私有方法重写功能测试代码
- 增加抽象类实例化相关测试文件
|
2 months ago |
韩天峰
|
5a7805b544
|
feat(php): 添加对动态属性赋值操作符和递增递减操作的支持
- 实现了动态属性的赋值操作符(如 +=、-=、.= 等)的解析和代码生成
- 添加了动态属性递增递减操作(++、--)的特殊处理逻辑
- 新增 genDynamicPropIncDec 方法用于生成动态属性 ++/-- 操作的 C++ 代码
- 为 clone 测试用例中的属性访问错误提供了更准确的错误消息
- 在属性获取逻辑中添加了静态与非静态属性访问的错误检查机制
|
2 months ago |
韩天峰
|
386c6568f1
|
test(aot): 添加可空布尔类型的基本测试用例
- 添加 bool 可空类型的基础测试文件 nullable-bool.phpt
- 测试静态类中 ?bool 类型参数的默认值行为
- 验证 null、true、false 和无参数传入的情况
- 包含动态类 eval 情况下的可空布尔类型测试
- 确保所有测试场景的输出符合预期结果
|
2 months ago |
韩天峰
|
db5de84468
|
fix(php): 修复可选参数中的null值处理问题
- 在函数调用优化器中添加对可空参数的支持
- 修改buildArgList方法以接收和处理nullables数组
- 当参数允许null值时直接传递原始变量而非解析值
- 更新函数反射信息以包含参数可空性信息
- 调整测试用例以反映explode函数中null限制的行为变化
- 移除显式传入null时使用默认值的特殊处理逻辑
|
2 months ago |
韩天峰
|
f45dadc2f8
|
test(strings): 更新字符串测试以支持AOT编译
- 移除多个测试文件中的 --CREDITS-- 和 --SKIPIF-- 部分
- 修改 bug73817.phpt 添加缺失的输出标记 ===DONE===
- 更新 chunk_split_variation4.phpt 中的跳过条件注释并移除问题测试用例
- 修改 fprintf_error.phpt、gh18823_strict.phpt 等多个测试的跳过原因
- 在 heredoc.phpt 中添加新的基本测试用例
- 修复 implode_basic.phpt 中的函数调用参数
- 更新多个测试文件的跳过条件以更好地描述AOT限制
- 调整 str
|
2 months ago |
韩天峰
|
ed9462bb49
|
chore(tests): 移除字符串函数测试中的AOT限制跳过条件
- 移除多个字符串函数测试文件中的 skip AOT limitation 条件
- 在005.phpt中将INI设置移至FILE部分并使用ini_set函数
- 更新addcslashes_005.phpt中的错误输出格式
- 修改bug67252.phpt中跳过条件的注释方式
- 调整bug68710.phpt和bug72663_2.phpt中的完成标记输出
- 移除trim相关
|
2 months ago |
韩天峰
|
f0c4b6bc98
|
fix(php): 解决可选参数传入null时使用C++默认值的问题
- 当可选参数显式传入null时跳过该参数,使C++默认值生效
- 添加对substr、strpos、stripos、strrpos、strstr、explode等函数的null参数处理
- 确保null参数行为与PHP原生函数一致
- 新增测试用例验证各种可选参数为null时的正确行为
|
2 months ago |
韩天峰
|
10fd8fe0ce
|
add string tests
|
2 months ago |
韩天峰
|
1ec0f3a2e0
|
chore(build): 更新版本号并优化打包脚本
- 添加 clean-elf.sh 脚本用于删除临时 ELF 可执行文件
- 将 swoole/phpx 依赖从 ~2.3.6 更新到 ~2.3.7
- 从打包清单中移除 composer.lock 文件
- 将版本号从 1066 更新到 1069
|
2 months ago |
yurunsoft
|
dfb6f693c3
|
修复 Windows 运行测试 (#1)
Co-authored-by: Yurun <admin@yurunsoft.com>
Reviewed-on: #1
Co-authored-by: yurunsoft <admin@yurunsoft.com>
Co-committed-by: yurunsoft <admin@yurunsoft.com>
|
2 months ago |
韩天峰
|
29236bb66a
|
test(php): 添加对象属性默认数组测试并移除运行时初始化检查
- 新增 multiple default array properties 测试用例
- 移除 ArrayInitPlan 的 requiresRuntimeInit 检查逻辑
- 简化 wrapArrayInitPlan 方法实现
|
2 months ago |
韩天峰
|
0dc846a4fc
|
feat(php): 添加数组初始化计划支持并修复构造函数提升属性默认值处理
- 引入 ArrayInitPlan 实体类用于处理数组初始化计划
- 修复构造函数参数提升属性的默认值归属问题
- 为数组类型的参数默认值添加运行时初始化支持
- 实现数组初始化计划的构建和包装逻辑
- 添加默认参数辅助函数生成功能
- 重构静态属性和实例属性的初始化处理逻辑
- 添加 readonly 类测试用例以验证功能正确性
|
2 months ago |
韩天峰
|
5ed79e9451
|
fix(php): 修复字面量字符串为空时的编译错误
- 在声明字面量字符串数组前检查数组是否为空
- 避免当没有字面量字符串时生成无效的 extern 声明
- 添加空数组条件判断以防止编译器报错
- 为函数默认值相关的字符串字面量添加相同保护
- 确保代码在各种情况下都能正确编译
|
2 months ago |
韩天峰
|
91a710844c
|
refactor(php): 重构静态属性默认值初始化逻辑
- 修改 genLocalVarDecl 方法接受局部变量数组参数
- 恢复 genScopeVarDecl 方法并调用 genLocalVarDecl
- 在 Preprocessor 中添加静态属性默认值初始化处理逻辑
- 扩展 PropertyDef 类添加 defaultInit 和 defaultClean 属性
- 更新 Translator 中静态属性设置逻辑支持初始化和清理代码
- 添加静态数组属性测试用例
|
2 months ago |
韩天峰
|
93367a722e
|
test(const): 添加零值类常量作为数组键的测试用例
- 创建了测试文件 zero-const.phpt 验证类常量值为0的情况
- 测试了将值为0的类常量用作数组键的功能
- 验证了返回数组中键值对的正确性
- 确保类型转换和数据完整性符合预期行为
|
2 months ago |
韩天峰
|
d1c4e365b1
|
test(const): 添加类常量默认值测试用例
- 添加了类常量默认值从 self::CV 获取的测试用例
- 测试静态方法和实例方法中使用类常量作为参数默认值
- 验证了函数调用时传入不同参数的输出结果
- 修复了类常量默认值非字符串类型时的导出问题
- 确保默认值能正确转换为字符串格式进行显示
|
2 months ago |
韩天峰
|
881c6dbe45
|
feat(trait): 实现trait抽象方法重复定义的兼容性检查
- 添加对多个trait中相同抽象方法的签名兼容性验证
- 实现抽象方法与具体方法之间的优先级处理逻辑
- 支持抽象方法参数类型、返回类型和可见性的比较验证
- 添加联合类型和交集类型的标准化字符串转换功能
- 创建详细的错误消息处理重复抽象方法的不同情况
- 增加测试用例验证trait重复抽象方法的处理机制
|
2 months ago |
韩天峰
|
e8fa430c8c
|
test(stdlib): 添加ArrayObject的count函数测试用例
- 创建了新的测试文件tests/aot/stdlib/countable.phpt
- 添加ArrayObject实例化和元素添加的测试代码
- 验证count函数对ArrayObject的计数功能
- 设置期望输出为int(3)验证测试结果
|
2 months ago |
韩天峰
|
5e1c44832c
|
chore(version): 更新版本号从 1064 到 1066
- 将 version.txt 中的版本号从 1064 更新为 1066
|
2 months ago |
韩天峰
|
afa8aa939a
|
fix(tests): 修复测试脚本中的函数参数和信息输出
- 更新 swoole/phpx 依赖版本从 ~2.3.4 到 ~2.3.6
- 移除 write_information 函数中的 $phpdbg 参数
- 删除对 $php_cgi 和 $phpdbg 相关的信息收集逻辑
- 简化 PHP 版本信息输出,只显示基础 PHP 信息
- 清理全局变量引用,移除不再使用的变量
|
2 months ago |
韩天峰
|
df78e177f4
|
refactor(optimizer): 优化函数调用参数转换逻辑
- 提取参数转换逻辑到独立的 applyArgConversion 方法中
- 将数组类型参数转换改为 convertArrayExpr 方法
- 在 UniversalMethodCall 中实现 PHP 函数调用优化
- 添加 tryOptimizePhpFn 方法支持直接 C++ 调用
- 实现 mergeConstArgs 方法合并常量参数
- 保留动态 php::call 作为备选方案
|
2 months ago |
韩天峰
|
797c19824d
|
Revert "refactor(Php): 将PHP函数调用改为C++函数调用"
This reverts commit b1cc95818a.
|
2 months ago |
韩天峰
|
8514d489a3
|
test(array): 添加数组方法测试用例
- 新增 array_method 测试文件 4.phpt
- 添加 contains 方法的基本功能测试
- 验证严格模式下的类型检查行为
- 确保数组包含方法的正确性验证
|
2 months ago |
韩天峰
|
b1cc95818a
|
refactor(Php): 将PHP函数调用改为C++函数调用
- 将数学函数的handler从php_fn改为cpp_fn,并更新函数命名空间为php::fn::
- 将字符串函数的handler从php_fn改为cpp_fn,并更新函数命名空间为php::fn::
- 将数组函数的handler从php_fn改为cpp_fn,并更新函数命名空间为php::fn::
- 将序列化相关函数的handler从php_fn改为cpp_fn,并更新函数命名空间为php::fn::
- 更新jsonDecodeToObject配置以移除不必要的常量参数设置
|
2 months ago |
韩天峰
|
ef6a9fb8e5
|
refactor(php): 统一PHP函数命名空间从std到fn
- 将所有php::std::前缀的函数调用更改为php::fn::前缀
- 替换AssignOpTrait.php中的pow函数调用路径
- 更新BinaryOpTrait.php中的mod和pow函数调用路径
- 修改CompilerBase.php中的头文件引用,合并为统一的phpx_std.h
- 在CompilerBase.php的throw语句中添加析构函数警告检查
- 更新FuncCallOptimizer.php中的各类数学和标准库函数调用路径
- 移除Translator.php中重复的标准库源文件引用
- 更新UniversalMethodCall.php中的parseStr函数调用路径
|
2 months ago |
韩天峰
|
527c7d62da
|
refactor(tests): 修复测试文件中的变量命名问题
- 删除了 abstract_class.phpt 测试文件
- 将 iterators_004.phpt 中的变量名从 $obj 改为 $obj2 以避免重复使用
- 将 iterators_006.phpt 中的变量名从 $array 改为 $array2 以避免重复使用
- 更新了相关循环中的变量引用保持一致性
|
2 months ago |
韩天峰
|
7939f28f37
|
test(phpunit): 添加抽象类和私有方法重写的测试用例
- 添加 testNewAbstractClass 方法测试抽象类实例化错误
- 添加 testOverridePrivateMethod 方法测试私有方法重写错误
- 使用 exec 方法验证预期的错误消息输出
- 扩展测试覆盖范围以包含更多边界情况
|
2 months ago |
韩天峰
|
57b95e88fd
|
removal(tests): 删除多个类测试文件并更新常量测试期望值
- 删除抽象类方法调用测试文件 tests/core/classes/abstract.phpt
- 删除抽象类实例化测试文件 tests/core/classes/class_abstract.phpt
- 删除对象克隆测试文件 tests/core/classes/clone_004.phpt
- 更新常量基本测试期望输出,移除未定义属性警告信息
- 重命名构造函数析构函数测试中的变量名 $t 为 $t2
|
2 months ago |
韩天峰
|
dbcadeb873
|
feat(php): 添加抽象方法支持和调用保护
- 在 ClassDef 中添加 abstractMethods 数组存储抽象方法
- 实现 addAbstractMethod 和 hasAbstractMethod 方法
- 添加 getMethodFlags 方法统一获取方法标志
- 在 Preprocessor 中解析并添加抽象方法到类定义
- 实现 guardAbstractMethod 防止调用抽象方法
- 在父类方法调用中添加抽象方法检查
- 更新单元测试验证抽象方法调用错误处理
|
2 months ago |
韩天峰
|
35f0775435
|
fix(tests): 修复 __call 方法测试中的预期输出
- 将测试期望值从 "changed" 改回为 "original"
- 修正了方法调用返回值的断言结果
|
2 months ago |
韩天峰
|
ceb5e5963f
|
fix(php): 修复子类作为父类返回时的类型检查问题
- 添加了内部接口类型的检查条件
- 实现了接口继承链的递归验证逻辑
- 支持传递性接口继承关系的检查
- 修复了Iterator等扩展Traversable的接口验证问题
|
2 months ago |
韩天峰
|
8fa49e078f
|
refactor(php): 优化迭代器处理逻辑以使用类入口指针和字面量字符串
- 使用 getClassEntryPtr 获取 IteratorAggregate 和 Iterator 类入口指针
- 使用 getLiteralString 替换硬编码的方法名字符串
- 将 instanceOf 检查从字符串比较改为类入口指针比较
- 将方法调用从字符串参数改为字面量字符串参数
- 使用 getFuncPtr 替换 get_object_vars 函数调用的硬编码字符串
|
2 months ago |
韩天峰
|
0c7464b4b3
|
refactor(php): 从函数调用优化器中移除 reset 和 end 函数
- 从 FuncCallOptimizer.php 中移除了 'reset' 和 'end' 函数
- 删除了相关的类型错误测试文件 reset_end_type_error.phpt
- 更新了优化器中的函数列表配置
|
2 months ago |
韩天峰
|
cd3f0743d7
|
fix(aot): 解决trait方法参数类型声明的完全限定名转换问题
- 重构upgradeToFullyQualifiedName方法,支持NullableType和UnionType的递归处理
- 修正逻辑以正确区分内置类型(self/static/parent)与自定义类名的处理方式
- 更新trait预处理器中的参数类型转换实现,确保类型节点正确替换
- 添加对Qualified名称的识别和转换支持
- 移除重复的上下文解析逻辑,提高代码效率
- 新增回归测试用例验证arginfo/zpp匹配问题的修复效果
|
2 months ago |
韩天峰
|
2824d8d21d
|
test(str): 添加字符串索引访问测试用例
- 测试 isset 对字符串布尔索引的处理
- 测试对象作为字符串索引的异常情况
- 验证 PHP 字符串索引访问的行为
- 检查不同类型索引的安全性问题
- 确保字符串索引边界检查功能正常
|
2 months ago |
韩天峰
|
cd2f4d7ac5
|
feat(compiler): 添加trait方法参数类名解析功能
- 实现resolveParamClassName方法处理参数类型中的非完全限定类名
- 在parseTrait阶段解析trait方法参数的类名避免gen_stub时上下文丢失
- 支持NullableType和UnionType类型的参数类型解析
- 添加对self、static、parent等特殊类型名称的处理
- 为trait方法参数类名解析功能添加完整的单元测试用例
|
2 months ago |
韩天峰
|
c7e752422a
|
test(aot): 添加字符串项isset操作的测试用例
- 添加了基本的字符串isset测试文件
- 测试不同索引位置的isset操作行为
- 验证字符串类型在AOT编译下的表现
- 包含null合并运算符的测试场景
|
2 months ago |
韩天峰
|
1e3cf4d25e
|
refactor(php): 优化条件表达式解析逻辑
- 提前解析条件表达式并存储到变量中避免重复计算
- 更新三元运算符表达式的构建方式提高代码可读性
- 添加 preg_match 函数相关的 AOT 编译测试用例
- 添加对象链接操作符相关的引用测试用例
- 完善正则匹配功能的自动化测试覆盖
|
2 months ago |
韩天峰
|
9138dea99f
|
feat(php): 实现赋值表达式返回值和函数参数检查功能
- 在数组赋值操作中添加临时变量存储以支持返回值
- 为属性赋值操作实现逗号表达式确保右值先计算后赋值
- 添加内部函数参数数量验证机制防止运行时错误
- 优化三元运算符表达式确保类型一致性
- 扩展函数调用优化器以支持参数类型和数量检查
- 添加测试用例验证数组维度赋值返回功能
- 添加测试用例验证属性赋值返回功能
- 添加测试用例验证三元运算符类型转换功能
|
2 months ago |
韩天峰
|
246689db4c
|
feat(compiler): 优化函数调用编译器实现支持可变参数类型转换
- 添加 array_merge 混合类型参数测试用例
- 在 CompilerBase 中为表达式添加括号包装确保正确解析
- 将 FuncCallOptimizer 中的所有私有方法和常量改为受保护访问级别
- 实现可变参数类型的类型感知转换功能
- 添加 variadicType 配置选项用于指定可变参数类型
- 扩展参数反射信息获取逻辑包含可变参数类型信息
- 更新生成可变参数调用方法支持类型转换
- 添加基础容器数组表达式转换辅助方法
- 修改返回赋值属性测试用例验证功能完整性
|
2 months ago |
韩天峰
|
26bdf5eb59
|
feat(enum): 支持枚举类型解析和处理
- 添加了枚举类型的语法解析功能
- 实现了对带值枚举(backed enums)的支持
- 添加了枚举案例值的存储和访问机制
- 支持枚举类型的运行时对象处理
- 完善了枚举常量数组的生成逻辑
- 新增了多个枚举相关的测试用例
|
2 months ago |
韩天峰
|
6849c56cc2
|
fix(php): 修复表达式类型检测中的缺失情况
- 添加了对 Expr_Print 表达式的类型检测支持
- 确保类型推断的一致性
|
2 months ago |
韩天峰
|
8517481c52
|
fix(php): 修正print函数的编译输出
- 将php::echo改为php::print以正确处理print表达式
- 添加完整的print函数测试用例验证功能正确性
|
2 months ago |