韩天峰
|
6e5b186c91
|
refactor(php): 重构PHP解析器的表达式处理和动态属性访问
- 将parseExpr替换为parseExprAsValue方法,统一处理void表达式转换为null
- 移除多处trimBrackets调用,简化表达式解析流程
- 添加emitDynamicPropertyFetchRead/Write/Unset等统一动态属性访问方法
- 重构PropertyWriteTarget类,将objectExpr和propertyExpr设为私有并添加getter方法
- 合并动态属性访问的目标路径和传统回退路径
- 修改测试框架中的exec方法为compile方法,更新相关测试用例
- 移除void表达式相关的错误检查,在运行时将其转换为null值
- 优化类型转换表达式的括号处理,移除不必要的trimBrackets调用
- 统一动态属性读取、写入、引用和取消设置的操作方法
|
2 months ago |
Yurun
|
b6e937a4cc
|
fix(compiler): 修复对象::class获取类名
|
2 months ago |
Yurun
|
580f1fb64f
|
fix(compiler): 修复引用参数是对象时调用方法错误
|
2 months ago |
韩天峰
|
df5dd2a5f6
|
refactor(php): 重构属性写入目标处理逻辑以支持动态对象属性
- 引入 PropertyWriteTarget 类来统一管理属性写入目标
- 修改 parseAssignPropertyFetch 方法以接受 PropertyWriteTarget 参数
- 移除已废弃的 parseAssignStaticProperty 方法
- 添加动态对象属性读取和写入的目标级辅助方法
- 更新复合赋值操作以使用统一的属性写入目标处理
- 改进属性引用获取逻辑以复用目标级引用辅助方法
- 在 .gitignore 中添加 swoole_compiler 和 tpc 目录排除规则
- 更新重构计划文档以反映动态属性写入目标的实现进展
|
2 months ago |
韩天峰
|
b13fdc60fa
|
refactor(php): 重构PHP编译器代码结构和方法实现
- 在AnonClassGenerator中优化匿名类方法访问逻辑,移除闭包传递改为直接对象引用
- 将BinaryOpTrait中的语句行追加逻辑提取为统一的formatCapturedStmtLines方法
- 重构ClosureGenerator中的闭包生成逻辑,分离箭头函数和匿名闭包的处理方式
- 提取CompilerBase中的通用方法如formatCapturedStmtLines、formatTernaryReturn等
- 优化返回类型检查逻辑,将重复的临时变量分配代码封装为通用方法
- 在ResourceFileGenerator中将版本号处理从函数映射改为循环处理
- 重构Translator中的文件过滤和命令参数处理逻辑为显式循环
- 将方法重写兼容性检查中的错误抛出逻辑提取为专用方法
-
|
2 months ago |
韩天峰
|
903af8c477
|
test(closure): 添加闭包use值和引用捕获功能测试
- 新增closure-use-reference-capture.phpt测试文件验证闭包捕获行为
- 添加ClosureTest类实现use引用捕获编译测试
- 在CompilerBase中添加stringifyParsedExpr方法处理表达式字符串化
- 重构函数调用参数处理逻辑提取为独立方法确保数组和命名参数正确处理
- 修改for循环条件和迭代部分的表达式解析确保正确转换
- 添加use-reference-capture.php测试代码验证闭包引用捕获功能
|
2 months ago |
韩天峰
|
248156b3b4
|
refactor(php): 重构PHP解析器中的条件表达式处理逻辑
- 修复BinaryOpTrait.php中的缩进问题,统一if语句的缩进格式
- 修改CompilerBase.php中接口常量处理逻辑,为数组类型常量添加原生名称前缀
- 重构多个辅助函数将引用传递改为返回值方式,包括appendStmtLines和相关返回函数
- 简化条件表达式和匹配表达式的代码生成逻辑,提高代码可读性
- 优化布尔表达式短路求值的实现方式
- 统一代码风格,减少不必要的变量赋值操作
|
2 months ago |
韩天峰
|
0af331db16
|
refactor(php): 重构类名比较和属性访问检查逻辑
- 移除对 PropertyAccessResolver 的依赖,直接实现类名比较功能
- 使用 strcasecmp 函数进行大小写不敏感的类名比较
- 重写 isSameOrSubclassOf 方法,通过 getParentClass 遍历继承链
- 简化 canAccessProtectedProperty 逻辑,优化作用域检查条件
- 更新单元测试中的属性访问器解析方法调用方式
|
2 months ago |
韩天峰
|
c05c63b8aa
|
refactor(php): 重构属性写入逻辑以统一动态属性访问
- 将动态属性读写操作收敛到 emitDynamicPropertyRead/Write 辅助方法
- 引入 PropertyWriteTarget DTO 来统一属性写入目标的准备和检查
- 通过 preparePropertyWriteTarget 统一处理对象和静态属性写入目标
- 使用 assertCanAssignPropertyWrite 进行属性写入的静态检查
- 通过 wrapPropertyWriteTypeCheck 实现运行时类型检查包装
- 更新复合赋值和自增自减操作符的属性访问逻辑
- 在文档中记录属性写入路径的重构计划和当前进展
|
2 months ago |
韩天峰
|
7d601a3f8c
|
refactor(php): 优化对象属性获取逻辑并添加性能测试
- 替换直接访问 objectProps 数组为 getObjectPropInfoByVar 方法
- 添加 registerObjectPropVar 和 registerHoistedObjectPropVar 辅助方法
- 移除重复的数组键检查逻辑,简化代码流程
- 新增性能基准测试文件用于测量不同调用方式的性能差异
- 添加实例和静态属性获取目标类以改进解析器结构
|
2 months ago |
韩天峰
|
8711545637
|
refactor(php): 重构属性访问解析逻辑以提高代码可读性
- 提取实例属性获取逻辑到独立方法 resolveInstancePropertyFetchTarget
- 提取静态属性获取逻辑到独立方法 resolveStaticPropertyFetchTarget
- 添加 InstancePropertyFetchTarget 和 StaticPropertyFetchTarget 数据结构
- 优化原生实例属性获取的条件判断流程
- 简化原生静态属性获取的处理逻辑
- 提取静态属性引用注册逻辑到独立方法 registerStaticPropertyRef
- 改进代码结构以提高可维护性和可测试性
|
2 months ago |
韩天峰
|
f631b395fc
|
refactor(php): 重构静态属性获取解析逻辑
- 将 findNativeStaticProperty 方法重命名为 resolveNativeStaticPropertyFetch 并返回对象
- 引入 StaticPropertyFetchResolution 类来封装静态属性获取的结果
- 修改条件判断从 if ($native) 到 if ($native !== null) 以明确检查 null 值
- 更新 parseNativeStaticPropertyFetch 方法的返回类型为 ?string
- 优化静态属性引用变量的生成逻辑,使用解析结果中的类名
- 移除不再使用的 $class 参数并简化方法调用
- 添加新的解析器相关类文件以支持属性访问解析功能
|
2 months ago |
韩天峰
|
6f15c61720
|
refactor(php): 重构原生属性访问逻辑以提高代码可维护性
- 引入 NativePropertyAccess 类来统一管理原生属性访问信息
- 将直接使用 getAttribute 的方式改为专用的 getter/setter 方法
- 修改属性变量检查逻辑从字符串验证改为 null 检查
- 优化属性访问结果的应用方式,使用对象封装替代多个属性设置
- 添加类型安全的原生属性访问获取方法
- 统一属性变量的设置和获取接口
|
2 months ago |
韩天峰
|
c34d11c136
|
refactor(php): 重构属性访问和赋值类型检查逻辑
- 提取属性定义获取逻辑到 getNativePropertyDef 方法
- 添加原生属性值源设置和检查方法
- 创建 PropertyAssignTypeInfo 类处理属性赋值类型信息
- 统一属性访问类型检查的实现方式
- 简化静态属性访问和动态属性访问的处理流程
- 更新文档中的重构计划说明
|
2 months ago |
韩天峰
|
59c9477bf5
|
refactor(php): 重构属性访问解析器以使用只读上下文接口
- 将 PropertyAccessResolver 从依赖 CompilerBase 大类改为依赖 PropertyAccessContext 接口
- 在 CompilerBase 中实现 PropertyAccessContext 接口并提供 getClassDef 和 getParentClass 方法
- 移除 PropertyAccessResolver 构造函数中的闭包参数,改用接口方法调用
- 更新 Preprocessor 中的父类获取逻辑以直接使用命名空间类名解析
- 修改 Translator 中的父类解析方式以保持一致性
- 在重构计划文档中添加只读接口设计原则说明
|
2 months ago |
韩天峰
|
87c54236a0
|
refactor(php): 重构属性访问解析逻辑以使用专门的解析器方法
- 将 findNativeProperty 方法替换为更具体的 resolveNativeInstanceProperty 和 resolveNativeStaticProperty
- 添加 resolveNullsafePropertyChain 方法处理空安全属性链检查
- 引入 PropertyAccessResult 类来统一属性访问结果的返回格式
- 使用 isNativePropertyAccess 方法替代直接的属性检查
- 移除旧的泛型 findNativeProperty 入口点以避免布尔参数扩散
- 更新 AssignOpTrait 中的属性访问检查逻辑
- 修改动态属性递增递减操作中的原生属性检查方式
- 调整编译器基类中的属性解析实现细节
|
2 months ago |
韩天峰
|
4b1b20c7ca
|
refactor(php): 重构属性访问解析逻辑并引入编译阶段管理
- 引入 PropertyAccessResolver 类统一处理属性访问逻辑
- 添加编译阶段管理 (idle/prepare/convert) 确保模块正确使用时机
- 将 isSameClassName、isSameOrSubclassOf、canAccessProtectedProperty 方法委托给 resolver
- 实现 PropertyAccessResult DTO 承载属性访问解析结果
- 为 Preprocessor 和 Translator 添加编译阶段进入/恢复逻辑
- 创建 CompilerPhaseTest 验证阶段管理功能
- 更新文档说明重构计划和模块拆分方向
- 修改函数返回值测试以适配重构后的测试需求
|
2 months ago |
韩天峰
|
64cf047f07
|
fix(parser): 解决空安全操作符在写入上下文中的使用问题
- 在赋值操作中添加空安全操作符检查,防止在写入上下文中使用
- 修复前置递增、后置操作、递减和unset操作中的空安全检查
- 添加对空安全属性访问的类型检测和错误处理
- 禁止对void函数调用结果进行赋值或二元运算
- 修复继承中私有属性重声明的错误处理逻辑
- 添加空安全写入操作的相关测试用例
|
2 months ago |
韩天峰
|
5027650611
|
feat(php): 添加表达式类型检查确保void表达式不能作为值或条件使用
- 在二元操作符解析中添加对左右操作数的类型检查
- 在有序操作数解析中添加对操作数的类型检查
- 修正类型检测逻辑,移除对void类型的特殊处理
- 在幂运算解析中添加对左右操作数的类型检查
- 在比较表达式解析中添加对操作数的类型检查
- 在短路逻辑操作符解析中添加对左右操作数的类型检查
- 添加assertExprCanBeUsedAsCondition方法用于条件表达式验证
- 在数组解析中添加对键值的类型检查
- 在for循环条件中添加对表达式的类型检查
- 在三元操作符解析中添加对条件和分支的类型检查
- 在match表达式解析中添加对条件和分支的类型检查
- 在位运算、布尔运算、打印、克隆等操作中添加类型检查
- 在类型转换操作中添加对操作数的类型检查
- 添加测试用例验证void表达式在各种场景下的使用限制
|
2 months ago |
韩天峰
|
13258d34a6
|
fix(parser): 解决构造函数返回值和void表达式使用问题
- 在赋值操作中添加void表达式检查,防止将void用作赋值值
- 添加构造函数返回值检测,禁止构造函数返回值
- 添加函数参数中的void表达式检查
- 新增构造函数返回值测试用例
- 新增父类构造函数作为值使用的测试用例
- 更新文档说明构造函数语义一致性要求
|
2 months ago |
韩天峰
|
399f77d5c5
|
feat(php): 实现对函数参数引用传递的支持
- 添加了 AOT 调用参数信息获取功能
- 实现了按索引和名称获取参数信息的方法
- 增加了对命名参数引用传递的判断支持
- 添加了引用参数值解析功能
- 优化了新对象构造函数参数传递逻辑
- 完善了对动态调用和继承链的参数分析
- 新增静态函数、方法和构造函数引用参数测试用例
|
2 months ago |
韩天峰
|
3d6e0b5689
|
feat(php): 添加对参数解包后位置参数的验证支持
- 在函数调用参数验证中添加了对参数解包的支持
- 实现了 hasUnpackCallArg 方法用于检测参数解包
- 添加了 shouldUseDynamicCallForNativeArgs 方法优化动态调用判断
- 修复了参数解包后不能跟位置参数的错误检查逻辑
- 更新了命名参数和解包参数的验证顺序
- 添加了多个测试用例验证参数解包功能的正确性
- 增加了 AOT 测试确保多异常捕获和抛出异常对象的功能正常
|
2 months ago |
韩天峰
|
2a9fcfb665
|
fix(php): 修复throw语句类型检查和对象转换逻辑
- 添加了表达式类型检测来确保只抛出对象类型
- 重构了throw语句的C++代码生成逻辑
- 优化了catch块中的类型检查条件构建方式
- 添加了对抛出非对象类型的静态错误检查
- 新增了throw标量值的测试用例
|
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 |
韩天峰
|
4ad8c0a6fa
|
feat(php): 实现表达式惰性求值和语句上下文处理
- 在三元运算符解析中添加分支语句收集和处理逻辑
- 实现match表达式的惰性求值支持
- 添加条件表达式和函数调用参数的惰性求值机制
- 重构代码结构以支持语句前后的代码块插入
- 更新变量赋值和返回语句的生成逻辑
- 添加lambda包装器用于复杂表达式求值
- 优化临时变量管理和作用域控制
|
2 months ago |
韩天峰
|
00f79ecdc1
|
feat(php): 实现PHP函数调用中的命名参数和参数解包功能
- 添加对命名参数语法的支持,包括参数验证和解析逻辑
- 实现参数解包功能,支持...操作符展开数组参数
- 添加hasNamedCallArg和hasUnpackBeforeNamedArg辅助方法进行参数检查
- 实现genCallUserFuncArray方法用于处理复杂参数场景
- 添加对参数顺序的验证,防止解包后使用命名参数的情况
- 更新parseCallArgs方法以支持分离命名参数和位置参数
- 添加相关测试用例验证新功能的正确性
|
2 months ago |
韩天峰
|
0bfa2869c5
|
feat(compiler): 支持命名参数和提升属性功能
- 添加了对函数和构造函数中命名参数的支持
- 实现了提升属性(Property Promotion)功能
- 新增了对 C++ 保留关键字作为参数名的支持
- 完善了闭包类型检查和参数验证逻辑
- 增加了内部函数调用的命名参数验证
- 优化了参数类型检查和错误提示信息
- 添加了相关测试用例验证功能正确性
|
2 months ago |
韩天峰
|
91f7085662
|
feat(closure): 为闭包添加类型检查功能
- 在ClosureGenerator中实现对nullable、union和intersection类型的返回值检查
- 为闭包参数添加运行时类型验证和错误提示
- 扩展CPP_RESERVED_NAMES数组,添加更多C++保留关键字
- 在FunctionContext中增加闭包返回类型检查相关属性
- 实现闭包参数和返回值的类型检查生成器方法
- 修复变量名转义逻辑,确保与PHPX关键字冲突的变量名被正确处理
|
2 months ago |
韩天峰
|
8231208eaf
|
fix(php): 修复继承访问控制和扩展清理逻辑
- 修改 canAccessProtectedProperty 替代 isInheritedFrom 处理保护属性访问
- 更新扩展模式下的映射表清理逻辑,使用 C++ 样式初始化替代 PHP 数组赋值
- 修复继承检查中私有成员重声明的处理,跳过私有父类属性/常量的兼容性检查
- 优化可见性检查逻辑,支持可见性放宽但阻止私有成员重声明
- 添加对父类可访问子类保护方法和常量的支持测试
- 新增属性和常量可见性放宽及私有成员重声明的测试用例
- 添加扩展清理映射表的运行时测试验证
|
2 months ago |
韩天峰
|
42ee6e3aa6
|
feat(php): 支持接口常量继承功能
- 实现了类通过继承链查找接口常量的功能
- 添加了接口及其父接口常量的递归收集机制
- 在编译器中增加了对实现接口的类处理数组常量的支持
- 更新了常量访问检查逻辑以支持接口常量继承
- 添加了单元测试验证接口数组常量向实现类的传播
- 创建了AOT测试用例覆盖接口数组常量继承场景
- 重构了接口实现检查相关代码结构
|
2 months ago |
韩天峰
|
3ca0d64a6a
|
feat(preprocessor): 增强PHP预处理器功能支持接口成员和常量解析
- 实现接口方法、常量和继承列表的解析与存储
- 添加对抽象方法签名的完整解析支持
- 增加命名空间常量的解析和类型推断功能
- 实现接口实现验证和方法签名匹配检查
- 支持多重接口继承关系的解析处理
- 添加重复定义(类、接口、常量、方法)的检测机制
- 实现trait别名和修饰符的正确解析
- 增强依赖排序算法支持接口和trait依赖关系
- 完善方法重写签名验证逻辑
- 添加接口方法由trait提供的情况处理
|
2 months ago |
韩天峰
|
47d11655ef
|
fix(backend): 修复编译选项中的安全定义转义和路径处理问题
- 为MSVC和GCC编译器添加unsafe defines的安全转义测试
- 实现formatDefineFlag方法统一处理宏定义转义逻辑
- 添加临时目录管理功能用于测试清理
- 重构共享编译选项构建逻辑到buildSharedCompileFlags方法
- 修复response file参数转义问题解决路径空格问题
- 更新clang-format命令执行时的路径转义
- 改进项目配置文件解析支持多种配置选项
- 添加对YAML配置文件自定义名称和相对路径的支持
- 实现代码格式化功能的可用性检查机制
- 修复默认formatCode选项设置为false的问题
|
2 months ago |
韩天峰
|
4632a8bba4
|
feat(compiler): 添加项目配置文件解析和类型检查功能
- 实现了 project.yml 配置文件解析支持 include-paths、defines、lto 等选项
- 添加了命令行参数与配置文件选项的合并逻辑
- 增强了类型检查错误消息中的可调用名称显示
- 添加了多个测试用例验证配置文件解析和类型检查行为
- 实现了 PHP 代码中父类方法重写和联合类型的功能测试
|
2 months ago |
韩天峰
|
a0c9591e81
|
feat(php): 添加对交集类型的支持
- 在 CompilerBase 中添加 IntersectionType 的引入和处理逻辑
- 更新 upgradeToFullyQualifiedName 方法以处理交集类型
- 修改复杂类型处理逻辑,将交集类型统一按 mixed/var 处理并在运行时进行 typeCheck
- 在 Preprocessor 中添加对交集类型的参数和返回值检查支持
- 扩展 TypeCheckGenerator 以支持交集类型的类型检查代码生成
- 添加交集类型参数和返回值的运行时检查测试用例
- 实现交集类型的字符串表示转换功能
- 添加 allOf 类型条件生成器以处理多个类型约束组合
|
2 months ago |
NathanFreeman
|
c8d8d1c9ba
|
修复 while do...while和if中的判断是赋值导致的C++编译警告的问题
|
2 months ago |
韩天峰
|
7eeb416f6a
|
refactor(php): 优化编译器方法调用逻辑
- 简化方法指针获取条件判断
- 使用内部类检查替代抽象方法和重写方法检查
- 移除不必要的方法标志位检测
- 重构动态调用测试用例
|
2 months ago |
韩天峰
|
8148ffce1e
|
fix(aot): 修复动态调用中的方法重写处理问题
- 添加了对父类参数类型调用重写方法的测试用例
- 增加了方法重写检测逻辑,避免对重写方法进行去虚拟化
- 新增 getOverrideMethodName 方法统一获取重写方法名称
- 新增 isFinalClass 方法判断类是否为 final
- 修正了 canDevirtualize 方法中关于最终类的判断逻辑
- 统一使用 getOverrideMethodName 获取完整方法名
- 优化了 SSA 稳定对象
|
2 months ago |
韩天峰
|
979ea385ca
|
fix(runtime): 解决抽象方法调用导致的崩溃问题
- 添加了对抽象方法调用的检查和处理逻辑
- 在方法指针获取时过滤掉抽象方法避免错误调用
- 对对象调用抽象类或接口方法时返回 false 避免运行时错误
- 添加了 noProgress 属性用于控制进度显示
- 完善了方法标志位检查机制防止虚方法调用异常
|
2 months ago |
韩天峰
|
15bcacacc0
|
fix(php): 修复引用参数传递中的静态属性处理问题
- 在引用参数解析中添加临时变量处理以支持引用类型参数
- 为静态属性获取器添加 toReference() 方法调用支持
- 添加新的测试用例验证静态属性引用操作的正确性
- 优化编译器对 nativeProperty 属性的引用值处理逻辑
|
2 months ago |
韩天峰
|
d49743a0fe
|
fix(php): 修复类型节点解析和返回类型检查问题
- 修正 resolveTypeNode 方法的返回类型为 NodeAbstract
- 在返回类型检查中添加对原生类的判断条件
- 仅对存在的类进行静态检查以避免动态类的编译期验证错误
- 保持对抽象类和接口的原有检查逻辑
|
2 months ago |
韩天峰
|
cd37d26e64
|
feat(generator): 添加匿名类生成器支持命名空间类型解析
- 新增 AnonClassGenerator trait 处理匿名类类型名称解析
- 实现匿名类内部类型引用转为全限定名称的功能
- 添加处理命名空间 use 导入的类型匹配逻辑
- 重构嵌入代码生成方法到独立 trait 中
- 添加匿名类继承和接口实现的全限定名称转换
- 新增测试用例验证匿名类在命名空间中的行为
|
2 months ago |
韩天峰
|
2800b974e3
|
refactor(php): 重构SSA分析和对象属性优化实现
- 移除FunctionContext中的ssaBuilder属性,改为函数内部临时创建
- 修改optimizeLoopVars、optimizeObjectProps、optimizeVarTypes方法接受SsaBuilder参数
- 实现对象别名传播检测以改进属性提升优化
- 添加resetAnalysisTemporaries方法重置分析临时数据
- 更新变量类型检测逻辑以支持SSA定义的局部变量
- 修复构造函数可以被重写的检查逻辑
- 扩展isTypedObject方法以包含稳定对象检测
- 为字符串连接扁平化和对象属性逃逸分析添加测试用例
|
2 months ago |
韩天峰
|
b3e489d334
|
refactor(aot): 重构标准容器实现将unordered_map重命名为ordered_map
- 将StdUnorderedMap重命名为StdOrderedMap并在所有相关文件中更新引用
- 修改polyfills.php中std::unordered_map为std::ordered_map,std::map为std::unordered_map
- 更新文档中关于标准容器的命名和功能描述
- 修复所有测试文件中关于容器类型的断言和期望值
- 调整编译器内部类型标识符从TYPE_STD_UNORDERED_MAP到TYPE_STD_ORDERED_MAP
- 修改解析器中对标准容器类型的判断和处理逻辑
- 更新单元测试中的类型检查和声明获取方法
|
2 months ago |
韩天峰
|
e4e63e7b8c
|
fix(php): 修复静态属性引用槽在动态引用绑定后的有效性问题
- 实现了对原生类型静态属性的引用管理机制
- 为整型和浮点型静态属性创建稳定的 zval* 槽位
- 添加了静态属性引用信息的条件检查和初始化逻辑
- 更新了静态属性访问的帮助函数选择机制
- 修改了变量声明生成以统一使用 zval* 类型
- 优化了头文件包含的代码生成格式
- 添加了相关的单元测试验证对象属性操作收集
- 新增了静态属性引用槽崩溃场景的测试用例
|
2 months ago |
韩天峰
|
602e8b34ee
|
feat(compiler): 为嵌入类方法添加混合返回类型推断支持
- 实现了对匿名类和嵌入类方法的混合返回类型自动推断
- 添加了魔术方法返回类型敏感性检测逻辑
- 集成了祖先类方法返回类型的递归检查机制
- 扩展了类继承链中的返回类型声明分析功能
- 优化了内部类和接口方法返回类型的反射检测
- 新增了类方法返回类型未声明时的混合类型注入逻辑
fix(optimizer): 修复对象属性提升优化中的引用槽位安全检测
- 修正了对象暴露给动态代码时的属性引用安全检查机制
- 更新了方法调用和函数调用的安全性判断逻辑
- 重构了对象参数传递时的危险操作检测算法
- 添加了
|
2 months ago |
韩天峰
|
4acb632c13
|
feat(compiler): 为类方法自动推断返回类型并优化属性访问检查
- 在 CompilerBase 中添加类方法返回类型自动推断逻辑
- 为魔术方法设置特定的返回类型标识符
- 移除 isInferredPhpDocType 条件判断简化类型处理
- 更新对象处理器设置使用自定义处理器覆盖 unset 操作
- 修改 SsaPropOptimizer 中的危险属性操作检测逻辑
- 移除对 unset($o->prop) 的特殊处理因为对象处理器已拒绝属性取消设置
- 移除动态调用对象暴露的安全性检查优化性能
- 删除不再需要的 isSafeObjectExposureCall 等辅助方法
|
2 months ago |
韩天峰
|
e6c3e22f6e
|
feat(compiler): 添加未定义变量检查和对象处理器初始化
- 在属性访问时检查未定义变量并报告错误
- 初始化类对象处理器以支持对象操作
- 添加对未定义变量属性访问的测试用例
- 添加对未定义变量方法调用的测试用例
- 为动态代码中的类型化属性取消设置添加测试
|
2 months ago |
韩天峰
|
72cf8e7166
|
refactor(php): 优化零值字面量判断逻辑
- 移除多余的变量赋值,直接返回表达式结果
- 统一数值比较操作符的一致性
- 为字符串数值转换添加括号以提高可读性
- 新增对常量和类常量表达式的零值检测支持
- 简化函数中的重复返回语句结构
|
2 months ago |
韩天峰
|
dc5c90044b
|
fix(php): 修复$GLOBALS变量处理问题
- 在CompilerBase.php中为$GLOBALS添加特殊处理逻辑,使用php_globals_array()创建独立副本
- 在FuncCallOptimizer.php中优化函数调用时对$GLOBALS的处理
- 移除Translator.php中$GLOBALS的全局变量初始化代码
- 避免直接操作$GLOABLS符号表的引用计数
- 确保$GLOBALS在各读取位置都通过安全方式访问
|
2 months ago |