韩天峰
|
6e5b186c91
|
refactor(php): 重构PHP解析器的表达式处理和动态属性访问
- 将parseExpr替换为parseExprAsValue方法,统一处理void表达式转换为null
- 移除多处trimBrackets调用,简化表达式解析流程
- 添加emitDynamicPropertyFetchRead/Write/Unset等统一动态属性访问方法
- 重构PropertyWriteTarget类,将objectExpr和propertyExpr设为私有并添加getter方法
- 合并动态属性访问的目标路径和传统回退路径
- 修改测试框架中的exec方法为compile方法,更新相关测试用例
- 移除void表达式相关的错误检查,在运行时将其转换为null值
- 优化类型转换表达式的括号处理,移除不必要的trimBrackets调用
- 统一动态属性读取、写入、引用和取消设置的操作方法
|
2 months ago |
韩天峰
|
b13fdc60fa
|
refactor(php): 重构PHP编译器代码结构和方法实现
- 在AnonClassGenerator中优化匿名类方法访问逻辑,移除闭包传递改为直接对象引用
- 将BinaryOpTrait中的语句行追加逻辑提取为统一的formatCapturedStmtLines方法
- 重构ClosureGenerator中的闭包生成逻辑,分离箭头函数和匿名闭包的处理方式
- 提取CompilerBase中的通用方法如formatCapturedStmtLines、formatTernaryReturn等
- 优化返回类型检查逻辑,将重复的临时变量分配代码封装为通用方法
- 在ResourceFileGenerator中将版本号处理从函数映射改为循环处理
- 重构Translator中的文件过滤和命令参数处理逻辑为显式循环
- 将方法重写兼容性检查中的错误抛出逻辑提取为专用方法
-
|
2 months ago |
韩天峰
|
248156b3b4
|
refactor(php): 重构PHP解析器中的条件表达式处理逻辑
- 修复BinaryOpTrait.php中的缩进问题,统一if语句的缩进格式
- 修改CompilerBase.php中接口常量处理逻辑,为数组类型常量添加原生名称前缀
- 重构多个辅助函数将引用传递改为返回值方式,包括appendStmtLines和相关返回函数
- 简化条件表达式和匹配表达式的代码生成逻辑,提高代码可读性
- 优化布尔表达式短路求值的实现方式
- 统一代码风格,减少不必要的变量赋值操作
|
2 months ago |
韩天峰
|
7d601a3f8c
|
refactor(php): 优化对象属性获取逻辑并添加性能测试
- 替换直接访问 objectProps 数组为 getObjectPropInfoByVar 方法
- 添加 registerObjectPropVar 和 registerHoistedObjectPropVar 辅助方法
- 移除重复的数组键检查逻辑,简化代码流程
- 新增性能基准测试文件用于测量不同调用方式的性能差异
- 添加实例和静态属性获取目标类以改进解析器结构
|
2 months ago |
韩天峰
|
6f15c61720
|
refactor(php): 重构原生属性访问逻辑以提高代码可维护性
- 引入 NativePropertyAccess 类来统一管理原生属性访问信息
- 将直接使用 getAttribute 的方式改为专用的 getter/setter 方法
- 修改属性变量检查逻辑从字符串验证改为 null 检查
- 优化属性访问结果的应用方式,使用对象封装替代多个属性设置
- 添加类型安全的原生属性访问获取方法
- 统一属性变量的设置和获取接口
|
2 months ago |
韩天峰
|
c34d11c136
|
refactor(php): 重构属性访问和赋值类型检查逻辑
- 提取属性定义获取逻辑到 getNativePropertyDef 方法
- 添加原生属性值源设置和检查方法
- 创建 PropertyAssignTypeInfo 类处理属性赋值类型信息
- 统一属性访问类型检查的实现方式
- 简化静态属性访问和动态属性访问的处理流程
- 更新文档中的重构计划说明
|
2 months ago |
韩天峰
|
5027650611
|
feat(php): 添加表达式类型检查确保void表达式不能作为值或条件使用
- 在二元操作符解析中添加对左右操作数的类型检查
- 在有序操作数解析中添加对操作数的类型检查
- 修正类型检测逻辑,移除对void类型的特殊处理
- 在幂运算解析中添加对左右操作数的类型检查
- 在比较表达式解析中添加对操作数的类型检查
- 在短路逻辑操作符解析中添加对左右操作数的类型检查
- 添加assertExprCanBeUsedAsCondition方法用于条件表达式验证
- 在数组解析中添加对键值的类型检查
- 在for循环条件中添加对表达式的类型检查
- 在三元操作符解析中添加对条件和分支的类型检查
- 在match表达式解析中添加对条件和分支的类型检查
- 在位运算、布尔运算、打印、克隆等操作中添加类型检查
- 在类型转换操作中添加对操作数的类型检查
- 添加测试用例验证void表达式在各种场景下的使用限制
|
2 months ago |
韩天峰
|
54bca6942e
|
feat(parser): 添加对象属性赋值类型检查和二元运算操作数处理
- 实现对象属性赋值时的类型验证检查机制
- 添加静态属性赋值的类型安全保护
- 引入有序操作数解析以支持复杂表达式计算
- 增加对函数调用参数的类型安全检查
- 优化二元运算符操作数的类型转换处理
- 添加测试用例验证类型检查功能正确性
- 扩展属性定义实体以支持类型检查配置
- 实现操作数材料化以处理副作用表达式
|
2 months ago |
韩天峰
|
cff27c7c79
|
refactor(parser): 重构二元操作符和控制流的解析逻辑
- 实现逻辑运算符短路求值功能,支持 && 和 || 操作符的惰性求值
- 添加 parseShortCircuitLogicalOp 方法处理逻辑运算符的特殊解析逻辑
- 新增 parseExprWithCapturedStmts 方法捕获表达式解析过程中的语句
- 实现 appendCapturedStmtLines 和 genConditionWithCapturedStmts 辅助方法
- 重构 for 循环条件和循环体表达式的解析逻辑
- 修改三元运算符解析以支持条件表达式的语句捕获
- 重构 if 语句解析使用递归函数处理 if-elseif-else 链
- 更新 while 和 do-while 循环处理条件表达式中的副作用
- 重构 switch 语句解析逻辑,改进 case 条件的匹配机制
- 添加多个测试用例验证条件表达式副作用的执行时机
|
2 months ago |
韩天峰
|
0f6e07252b
|
refactor(php): 优化PHP解析器中的字符串连接操作处理
- 实现了递归展平函数来处理嵌套的连接表达式
- 将原有的二元操作符处理改为多参数列表处理
- 添加了类型检查逻辑以防止空值连接错误
- 更新了OPcache配置命令以确保扩展正确加载
- 重构了连接操作的字符串转换和参数构建过程
|
2 months ago |
韩天峰
|
cba9990e80
|
refactor(parser): 重构零值字面量检测逻辑
- 将 isZeroLiteral 方法从 BinaryOpTrait 移动到 CompilerBase 类中
- 为 isZeroLiteral 方法添加详细的文档注释说明其用途
- 添加 targetPlatform 配置选项支持交叉编译目标平台
- 修复对象属性测试用例中的数组索引访问功能
- 在 array_sum 和 array_product 测试中添加错误报告控制
|
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 |
韩天峰
|
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函数调用路径
|
3 months ago |
韩天峰
|
8aa1745e1d
|
feat(parser): 添加对Big*数值类型不支持运算符的检查
- 在BinaryOpTrait中添加Big*类型运算符支持检查逻辑
- 检测到BigFloat、Decimal或BigInt类型使用不支持的运算符时抛出错误
- 添加测试用例验证模运算符%对BigFloat类型的不支持
- 添加测试用例验证按位与运算符&对Decimal类型的不支持
- 添加测试用例验证左移运算符<<对BigFloat类型的不支持
- 添加测试用例验证按位或运算符|对Decimal类型的不支持
|
3 months ago |
韩天峰
|
195013ae7c
|
perf(php): 优化PHP到C++转换性能
- 添加相同操作符编译时类型优化,对相同原始类型直接使用C++ ==
- 实现is_*函数编译时消除,当SSA缩小类型时直接返回true
- 添加count()函数字面量数组编译时计算
- 实现字符串字面量编译时操作优化,支持strtoupper、strtolower、trim等函数
|
3 months ago |
韩天峰
|
ff6ca6c03a
|
重构:将代码迁移至独立的 PHP 源文件,减少核心类的代码行数
|
3 months ago |