韩天峰
|
1567ad2f88
|
fix(php): 解决匿名类继承父类名称解析问题
- 在编译器中为匿名类继承的父类添加全限定名称转换
- 修复了当匿名类继承使用use导入的类时的名称解析错误
- 添加了对继承类名的命名空间处理逻辑
- 确保匿名类能够正确继承并访问父类方法
|
4 months ago |
韩天峰
|
84b9340998
|
fix(aot): 修复AOT编译中类继承和常量定义相关问题
- 在WorkerA类中添加baz方法用于测试保护方法访问
- 修正isInheritedFrom方法中类名比较逻辑,确保正确的继承检查
- 更新对象实例类名获取方式,使用getFullClassName替代直接访问
- 修复常量定义解析中的多余换行符问题
- 扩展测试用例验证保护方法在不同实例间的调用行为
|
4 months ago |
韩天峰
|
492a1dbd39
|
fix(php): 修复类方法访问权限检查逻辑
- 重构 checkAccessible 方法,正确处理 private 和 protected 方法的访问控制
- 添加对受保护方法的继承关系检查
- 修复当前类内部访问权限判断逻辑
- 优化 findNativeMethod 中的对象方法查找流程
- 添加缺失的返回值处理逻辑
|
4 months ago |
韩天峰
|
78b93ed32c
|
fix(php): 修复函数参数引用类型检查逻辑
- 移除对非引用类型变量的错误检查逻辑
- 简化参数引用转换流程
- 添加PHP 8.0类型声明兼容性测试用例
- 修复当参数为未定义变量时的引用创建机制
|
4 months ago |
韩天峰
|
eaa598a48e
|
fix(php): 解决字符串连接操作符的void类型检查和引用参数处理问题
- 在parseBinaryOpConcat方法中添加了对左右操作数的类型检查,防止void类型的连接操作
- 为concat操作添加了专门的符号函数php::concat
- 修复了引用参数传递时的变量类型验证逻辑
- 更新了常量定义方法的返回类型从string改为void
- 修正了预处理器中函数声明的换行符处理
- 将Iterator方法调用从exec改为call以统一接口调用方式
- 添加了concat_void.php示例文件用于测试void类型连接错误
- 新增了ref相关的测试用例文件
|
4 months ago |
韩天峰
|
ec98d1045d
|
fix(php): 修复异常处理和编译器逻辑问题
- 添加了 try-catch 异常处理的测试用例
- 实现了 isFullNameExpr 方法用于检查完全限定名称表达式
- 修复了编译器中的 break 语句缺失问题
- 重命名了 parseGlobal 方法参数以避免变量冲突
- 优化了 catch 类型检查逻辑,支持类名实例化检查
- 添加了 C++ 关键字到保留字常量列表
- 完善了项目配置文件 project.yml
- 添加了 instanceOf 符号方法
- 修复了多个 switch 语句中的 break 缺失问题
|
4 months ago |
韩天峰
|
ee8c40698b
|
refactor(compiler): 重构标准库函数调用解析逻辑
- 提取 std 函数调用解析为独立方法 parseStdCall
- 简化 CompilerBase 中的类型转换处理逻辑
- 优化 gen_stub 中版本特性合并的实现方式
- 修改 getAllFuncInfos 方法返回值类型为数组合并
- 为 std::int 类型声明测试用例添加新断言
|
4 months ago |
韩天峰
|
17f4d14940
|
feat(php): 添加按位或赋值操作符支持
- 在 CompilerBase.php 中添加 Expr_AssignOp_BitwiseOr 的解析处理
- 实现 parseAssignOpBitwiseOr 方法处理 |= 操作符
- 添加相应的单元测试文件 assignop_bitwiseor.phpt 验证功能
|
4 months ago |
韩天峰
|
26dfc99094
|
feat(aot): 增强类型推断支持接口类型
- 添加接口类型检测功能,实现 hasInterface 方法
- 修改对象赋值逻辑,对接口类型变量进行特殊处理
- 增强返回值类型检查,支持接口类型的动态类型检测
- 更新类继承关系检查,支持接口实现关系验证
- 添加测试用例验证接口类型推断功能
- 修复接口名称存储时的转义问题
- 默认开启错误回溯打印功能便于调试
|
4 months ago |
韩天峰
|
45a4582d03
|
feat(php): 添加错误时打印回溯跟踪的配置选项
- 在 CompilerBase 类中新增 printBacktraceOnError 属性,默认值为 false
- 修改错误处理逻辑,仅在 printBacktraceOnError 为 true 时调用 debug_print_backtrace()
- 保持原有错误消息显示和程序退出功能不变
|
4 months ago |
韩天峰
|
165d683f5a
|
fix(aot): 解决数组键为0时的C++编译歧义问题
- 添加VALUE_ZERO常量用于表示数字0键
- 实现parseArrayKey方法统一处理数组键解析逻辑
- 修复0键在C++中可能产生的空指针与整数二义性错误
- 更新数组测试用例以验证0键正确处理
- 重构数组键处理代码减少重复逻辑
- 添加相关测试文件验证不同数组场景
|
4 months ago |
韩天峰
|
583536a24e
|
fix(php): 修复编译器中的条件判断逻辑错误
- 修正了 isClassConstFetch 条件判断的位置,确保正确的执行流程
- 补全了 DynamicCall 异常捕获后的代码块结构
- 修复了静态方法调用检查中的条件表达式逻辑
- 统一了 Translator 中的 elseif 语法使用规范
|
4 months ago |
韩天峰
|
1fbaa07820
|
fix(aot): 修复静态方法调用中的占位符生成问题
- 将 Symbol::getCalledCe() 替换为 Symbol::getCalledClass() 以正确处理静态方法调用
- 添加了针对 static::bar(...) 语法的测试用例
- 确保继承类中的静态方法调用能够正确解析到子类方法
|
4 months ago |
韩天峰
|
f41d42e5bc
|
feat(compiler): 增强类型声明和对象赋值检查功能
- 添加了 objval() 函数支持 Class::class 常量语法
- 实现了方法调用和静态调用的返回类型推断
- 加强了对象类型赋值检查,要求使用 objval() 进行类型对齐
- 禁止字符串与数组之间的直接转换
- 添加了内部类常量值获取功能
- 更新了测试用例验证类型声明功能
|
4 months ago |
韩天峰
|
e62c953c71
|
feat(compiler): 完善类型声明和对象赋值检查功能
- 将 getNamespacedClassName 方法设为公共方法以便外部调用
- 添加对 self、parent、static 关键字的类型解析支持
- 优化 Name_FullyQualified 节点的解析逻辑
- 实现 detectClassOfExpr 方法用于检测表达式的类类型
- 增强对象赋值时的类型检查和错误提示
- 完善返回值类型的验证机制
- 重构类型检测相关方法的命名和实现
- 添加对 trait 语句的解析支持
- 优化构建模式设置功能
- 增加类型声明相关的测试用例
|
4 months ago |
韩天峰
|
57220d63b9
|
feat(trait): 实现 trait 使用适配器功能支持别名和冲突解决
- 添加 traitAliases 和 traitIgnored 属性到 ClassDef 存储适配器配置
- 实现 trait 方法别名映射功能 (as)
- 实现 trait 方法冲突解决机制 (insteadof)
- 在预处理器中解析 trait use 语句的适配器选项
- 在翻译器中应用 trait 别名和忽略规则
- 添加完整的 trait 冲突测试用例验证功能正确性
|
4 months ago |
韩天峰
|
b8897319cb
|
fix(php): 修复字符串字面量优化导致eval函数执行异常
- 禁用eval函数中PHP代码段的字面量字符串优化
- 添加noLiteralString属性标记避免优化器错误处理
- 修改编译器基类中字符串解析逻辑以支持条件优化控制
|
5 months ago |
韩天峰
|
f4b8d6c1f3
|
feat(php): 添加对 trait 的支持并重构符号引用方式
- 在 ClassDef 中添加 trait 属性标识类是否为 trait
- 新增 Symbol 类统一管理 PHP 符号的生成
- 将编译器中的硬编码符号调用替换为 Symbol 类方法
- 实现 Trait 使用功能,支持将 Trait 中的常量、属性和方法复制到目标类
- 添加对 trait 内属性的动态访问支持
- 重构静态属性访问逻辑以兼容 trait 使用场景
- 移动并优化常量值获取相关方法到 Translator 类
|
5 months ago |
韩天峰
|
d85353f8eb
|
feat(compiler): 实现常量值解析和类型安全的值生成
- 在 ConstantDef 中添加 valueExpr 属性以支持表达式解析
- 将 gen_stub.php 移动到 src 目录并重构为可重用函数
- 实现 getClassConstValue 和 getConstValue 方法处理类常量和全局常量
- 添加 genCValue 工具方法支持不同类型的 C 值生成
- 修改预处理器存储常量表达式节点信息
- 更新编译器基础类 getRelativePath 方法为公共访问
- 优化 stub 文件生成逻辑使用内部函数替代 shell 执行
- 添加错误处理机制替换原有的直接退出方式
|
5 months ago |
韩天峰
|
36cf7dbf16
|
feat(aot): 添加对引用赋值和列表赋值的支持
- 实现了引用赋值功能,支持变量间的引用传递
- 添加了列表赋值解析逻辑,支持数组解构赋值操作
- 新增 isAssignExpr 方法用于判断赋值表达式类型
- 重构了赋值相关的编译逻辑,提高代码可读性
- 添加了多个测试用例验证引用和列表赋值功能
- 修复了动态调用中的参数展开问题
|
5 months ago |
韩天峰
|
58b6d4fad4
|
fix(compiler): 修复函数声明中的返回类型处理逻辑
- 在函数编译过程中添加了对返回类型的正确处理分支
- 确保当函数具有返回类型声明时不跳过必要的代码生成步骤
- 添加了测试用例验证可迭代类型声明的功能
- 修复了可能导致编译错误的条件判断逻辑
|
5 months ago |
韩天峰
|
485dce7b95
|
refactor(compiler): 优化编译器类方法处理逻辑
- 移除 CompilerBase.php 中不再使用的 method 属性初始化
- 为构造、析构、克隆方法添加无返回值类型限制
- 添加类和方法重置功能,确保状态正确清理
- 统一重复变量测试消息文本
- 调整静态绑定测试中的属性访问权限
- 新增受保护属性访问测试用例
|
5 months ago |
韩天峰
|
394c5ee0b7
|
refactor(php): 优化编译器基础类和预处理器逻辑
- 移除了未使用的 PropertyDef 导入声明
- 添加了 getRelativePath 方法用于获取相对路径
- 调整了方法调用返回类型检测的条件判断逻辑
- 修改了常量和别名解析的条件判断结构
- 重构了类继承检查逻辑,改进了内部类继承关系处理
- 更新了代码格式化时的路径显示为相对路径
- 重写了循环依赖解决算法的实现位置
- 修复了引用参数默认值的处理方式
- 统一了多个文件中的路径显示为相对路径格式
|
5 months ago |
韩天峰
|
d37c979031
|
重构:在预处理阶段获取所有类、函数、常量、属性定义,解决循环依赖的问题
|
5 months ago |
韩天峰
|
90866a803b
|
fix(php): 修复数组维度赋值解析逻辑
- 简化了 isArrayDimFetch 条件判断,添加 isVarExpr 验证
- 重构了字符串类型检查逻辑,移除冗余条件判断
- 直接返回 parseAssignArrayDim 调用结果,简化代码流程
- 移除了不必要的变量赋值和条件分支
|
5 months ago |
韩天峰
|
c67c3dfea9
|
refactor(compiler): 优化编译器内部结构并添加常量支持
- 添加 internalConstants 数组用于存储内部常量
- 重构变量赋值类型检查逻辑,简化条件判断
- 添加 isInternalInterface 和 isInternalConstant 辅助方法
- 优化参数类型解析过程,统一对象类型处理
- 改进常量查找逻辑,优先检查内部常量
- 增强类继承关系检查,支持内部接口验证
- 在预处理器中添加循环依赖检测和解决机制
- 引入 TopSort 库处理文件依赖排序问题
- 优化反射类,添加内部接口识别功能
- 初始化内部常量列表,提升常量处理性能
- 添加测试用例验证类型命中功能
|
5 months ago |
韩天峰
|
128b6b8a73
|
refactor(php): 优化PHP编译器类型检查和函数定义逻辑
- 添加对内置类型的映射支持,改进类型解析逻辑
- 为函数定义添加精确返回类型标记功能
- 修复对象重新赋值时的类型检查条件判断
- 改进变量赋值时的类型验证规则,支持var类型灵活赋值
- 添加数组转换表达式类型识别支持
- 优化函数调用返回值类型获取逻辑
- 新增类继承关系检查辅助方法
- 改进参数传递时的对象类型验证
- 调整预处理器中的use语句解析顺序
- 修正符号调用记录中的类名解析逻辑
|
5 months ago |
韩天峰
|
156fb0a8bf
|
refactor(php): 重构参数类型检查和方法重写逻辑
- 调整了对象参数类型验证的条件判断结构
- 在反射类中添加了获取类方法修饰符的辅助方法
- 优化了父类方法重写的检查逻辑,支持内置类的私有方法检测
- 添加了标签跳转来处理私有方法重写的错误情况
|
5 months ago |
韩天峰
|
ea34eaaf89
|
refactor(php): 重构静态变量添加逻辑以支持重复变量检查和返回全局变量名
- 修改 addStaticVar 方法参数,接受 Variable 对象并返回全局变量名
- 在 addStaticVar 中添加重复变量检查和错误报告功能
- 将静态变量处理逻辑集中到 addStaticVar 方法中
- 简化静态变量列表处理代码,直接调用重构后的方法
- 移除重复的变量检查和全局变量添加代码
|
5 months ago |
韩天峰
|
17f3ded89a
|
refactor(Php): 重构静态变量处理逻辑
- 移除重复的静态变量检查逻辑
- 修改静态变量转义方法,移除前缀
- 更新静态变量声明为全局变量引用方式
- 修复静态变量初始化代码生成逻辑
- 统一变量命名转义处理流程
|
5 months ago |
韩天峰
|
68155d0793
|
feat(compiler): 添加参数类型检查和对象类型验证功能
- 在ArgInfo类中新增class属性用于存储类型信息
- 修改parseParameterType方法以传递ArgInfo对象并设置类名
- 添加对stdClass和ArrayObject类型的测试用例
- 实现参数类型验证逻辑,确保对象类型匹配
- 增强类型转换过程中对对象类型的检测和错误提示
- 优化数组维度赋值的处理逻辑
|
5 months ago |
韩天峰
|
932dc070d8
|
feat(php): 支持命名参数调用功能
- 实现 parseNamedCallArgs 方法处理命名参数解析
- 添加命名参数语法验证和错误提示机制
- 生成临时变量存储命名参数数组结构
- 集成命名参数到函数调用参数解析流程
- 创建测试用例验证命名参数功能正确性
- 添加动态调用场景下的命名参数支持
|
5 months ago |
韩天峰
|
27060d9b87
|
refactor(php): 重构变量声明和全局变量处理逻辑
- 将 localVarDecl 重命名为 scopeVarDecl 并更新所有相关调用
- 移除旧的 getStaticVarName 方法,使用新的 escapeStaticVar 方法
- 添加 parseSuperGlobalVar 方法来处理超全局变量
- 添加 hasArgument 和 addScopeGlobalVar 等辅助方法
- 更新 hasVar 方法以支持作用域全局变量检查
- 实现对 $GLOBALS 数组访问的支持,将其转换为相应变量
- 重构全局变量初始化和清理逻辑,使用新的命名规则
- 添加函数上下文中的全局变量数组存储
- 更新模板文件中的全局变量引用方式
|
5 months ago |
韩天峰
|
cc1131f455
|
feat(php): 优化全局变量访问和基准测试函数类型声明
- 在CompilerBase.php中添加标量字符串维度检查,直接返回全局变量名称而不是调用php::global
- 为micro_bench.php中的read_global_var、read_hash、read_str_offset和issetor函数添加int类型声明
- 改进全局变量处理逻辑,避免不必要的php::global调用
- 提升代码类型安全性和性能表现
|
5 months ago |
韩天峰
|
34e112d697
|
feat(php): 添加类构造函数初始化和清理功能
- 在ClassDef中添加ctorInit、ctorClean属性和propertyContext
- 修改编译器在对象创建时执行属性初始化代码
- 添加对默认数组属性的支持和测试
- 实现属性上下文管理以正确处理构造函数逻辑
- 更新预处理器和翻译器以支持新的属性处理机制
- 添加property_exists函数的相关测试用例
|
5 months ago |
韩天峰
|
0cee9a4154
|
feat(php): 支持常量别名解析和命名空间处理
- 实现 useAliases 映射来处理常量别名
- 添加命名空间类名解析逻辑到 getNamespacedClassName 方法
- 修复 parseUse 方法的参数类型声明为 Node\Stmt\Use_
- 更新变量命名提高代码可读性
- 添加 use-const.phpt 测试用例验证常量别名功能
|
5 months ago |
韩天峰
|
28de6c86a4
|
fix(php): 解决动态调用和方法重写的相关问题
- 添加了动态调用时的作用域切换代码生成
- 修复了 MethodCall 中的动态调用检测逻辑,区分魔法方法调用
- 为类方法定义添加了 hasDynamicCall 属性标识
- 实现了类继承链中私有方法重写的错误检查
- 添加了多个测试用例验证字符串连接性能和动态调用行为
|
5 months ago |
韩天峰
|
08cbfa1d71
|
refactor(php): 更新 shell_exec 解析方法的参数类型
- 将 parseShellExec 方法的参数类型从 mixed 更改为 Node\Expr\ShellExec
- 重构 shell_exec 表达式的解析逻辑
- 使用 identifierToStr 方法处理表达式部分
- 改进代码的类型安全性和可读性
|
5 months ago |
韩天峰
|
e7db0c7348
|
fix(php): 修复箭头函数变量作用域和二元运算符解析问题
- 添加箭头函数基本功能测试用例验证闭包行为
- 修复二元运算符解析时变量存在性检查逻辑
- 解决全局变量在箭头函数中的访问问题
- 修复数组解包空数组导致断言失败的bug
- 改进变量名转义和局部变量检测机制
|
5 months ago |
韩天峰
|
b8516b6ac0
|
fix(php): 修复存根文件函数返回类型检查和类方法处理逻辑
- 修复存根文件中魔术方法(__construct/__destruct/__clone)不需要声明返回类型的问题
- 在FunctionDef构造函数中添加stub参数传递
- 修正main函数参数类型检查逻辑,添加逻辑非运算符
- 移除类方法中重复的'this_'参数添加,在stub函数处理后重新添加
- 添加stub函数的特殊处理逻辑,无具体实现时重置函数定义
- 修复类方法名称处理中的变量引用问题
|
5 months ago |
韩天峰
|
b0a6898ca8
|
fix(aot): 修复空合并赋值运算符测试用例和类名解析问题
- 更新测试用例 004.phpt 中的变量初始化顺序以匹配预期行为
- 修改 CompilerBase.php 中的类名解析逻辑,使用 getFullClassName() 替代直接访问 $this->class
- 确保 self 引用时获取完整的类名信息
|
5 months ago |
韩天峰
|
52a0205c96
|
fix(aot): 修复链式操作中变量访问顺序问题
- 在编译器基础类中反转变量链表顺序
- 确保变量访问按正确顺序执行
- 添加对空值检查的测试用例
- 验证数组元素访问的正确性
|
5 months ago |
韩天峰
|
f226382d52
|
fix(static): 修复静态变量初始化中的类常量引用问题
- 添加了新的测试用例验证 Bug #23384 的修复
- 实现了 genLambdaCall 方法用于处理静态变量赋值
- 修改 parseBeforeStmtLines 和 parseAfterStmtLines 方法以支持后置语句处理
- 在静态变量初始化时使用 lambda 表达式确保常量正确解析
- 修复了静态变量默认值解析中对类常量的引用问题
|
5 months ago |
韩天峰
|
e1fd716e03
|
test(compiler): 添加多个 bug 修复测试用例并修复全局变量解析问题
- 添加 bug #24499 测试用例,验证公共属性被误处理为私有属性的问题
- 添加 bug #24652 测试用例,修复 array_flip 函数的 broken 问题
- 添加 bug #24908 测试用例,解决超全局变量在 __destruct 中无法使用的问题
- 添加 bug #55754 测试用例,修复 ZEND_SEND_PREFER_REF 参数的引用传递问题
- 修复 CompilerBase.php 中全局变量解析逻辑,确保变量名正确转义
|
5 months ago |
韩天峰
|
8312de6c73
|
feat(compiler): 添加原生类型支持和标准库函数
- 引入 native_types 类常量定义基本类型
- 添加 std 类提供 int、float、bool 类型转换方法
- 实现 objval 函数进行对象类型验证
- 在 CompilerBase 中添加 nativeTypes 属性控制类型行为
- 修改 getNativeType 方法使用 nativeTypes 判断
- 更新 use 语句解析支持 native_types 导入
- 在 micro_bench 示例中启用严格类型声明
- 添加 str_byte 示例文件测试字符串字节操作
|
5 months ago |
韩天峰
|
af42804d8f
|
refactor(php): 优化编译器常量和静态属性处理逻辑
- 为 parseAssignFinally 方法添加参数类型声明
- 重命名 getClassConst 为 findNativeClassConst 方法
- 为表达式添加 nativeConst 属性标记原生常量
- 添加对静态属性获取的检查和处理逻辑
- 更新常量获取调用以使用新方法名
|
5 months ago |
韩天峰
|
67bbfb8852
|
fix(php): 修复AOT编译器中isset操作和属性获取问题
- 添加变量存在性检查,防止AOT编译器操作未定义变量
- 优化单属性读取逻辑,支持原生属性访问
- 移除不必要的数组反转操作提升性能
- 修复属性映射偏移量计算错误,统一加减1024补偿值
- 更新示例代码中的静态变量初始值
|
5 months ago |
韩天峰
|
c53e7afdb5
|
test(lang): 添加多个 bug 修复测试用例
- 添加 Bug #21094 关于 set_error_handler 不接受方法的测试
- 添加 Bug #21961 关于 get_parent_class() 段错误的测试
- 添加 Bug #23624 关于 foreach 留下当前数组键为 null 的测试
- 添加 Bug #26869 关于常量作为静态数组键的测试
- 添加 Bug #30726 关于 -.1 类似数字处理不当的测试
- 添加 Cannot re-assign $this 的测试用例和相关代码文件
- 更新编译器默认原生类型设置为 true
- 添加 strlen 函数调用优化处理
|
5 months ago |
韩天峰
|
2267de194b
|
fix(php): 修复静态属性访问和操作符映射问题
- 修正 OP_NOT_EMPTY 操作符映射从 '!php::empty' 到 'php::notEmpty'
- 修改 findNativeStaticProperty 方法返回类型从 PropertyDef 到 string
- 添加对 parent:: 静态属性访问的支持和错误处理
- 更新 findNativeProperty 方法参数添加 static 标识符
- 修复静态和动态属性访问的判断逻辑
- 统一错误消息中的对象引用为表达式节点
- 简化静态属性获取的实现逻辑
- 添加静态属性访问的基本功能测试用例
|
5 months ago |
韩天峰
|
517c0d8a83
|
refactor(Php): 优化链式表达式解析逻辑
- 将函数获取操作提前到方法开始处,避免重复调用
- 统一使用预获取的函数名变量进行字符串拼接
- 移除重复的 getChainedFunc 方法调用
- 简化 isset 操作符的条件判断逻辑
- 优化代码结构以提高执行效率
|
5 months ago |