韩天峰
|
ed45578ef1
|
fix(php): 修复函数参数解析中的默认值计数问题
- 为parseParams方法添加完整的PHPDoc注释
- 将$params参数类型声明为array以增强类型安全
- 引入defaultValueCount变量来准确计算默认值参数数量
- 修复required参数计数逻辑,确保正确处理带默认值的参数
- 添加对classDef为空情况的处理,避免未定义行为
- 调整头文件包含顺序以符合代码风格要求
- 添加函数默认参数测试用例验证修复效果
|
6 months ago |
韩天峰
|
d8e164b32c
|
feat(aot): 添加对static关键字的支持
- 实现了static::method()静态方法调用的编译支持
- 添加了new static()动态实例化的处理逻辑
- 增加了static属性访问的正确解析
- 添加了两个新的AOT测试用例验证static功能
- 实现了延迟解析以支持后期绑定行为
|
6 months ago |
韩天峰
|
cebe50121a
|
refactor(php): 优化PHP编译器代码结构和功能实现
- 修复AstNodeType中isAssignOp方法的命名空间引用问题
- 移除class-static-002测试用例中的多余输出断言
- 在CompilerBase中添加objectWrappers和ceWrappers属性用于对象包装器管理
- 新增getCeWrapper方法用于获取类入口包装器
- 修改注释格式从文档块改为行注释以提升性能
- 移除hasNativeClass和hasNativeFunction的返回值类型注解
- 重构parseArrayMixed方法的位置,从私有方法调整为类末尾重新定义
- 简化魔术常量解析中的字符串拼接逻辑
- 优化静态调用处理,支持static关键字的正确解析
- 添加addTmpVar辅助方法用于临时变量创建
- 统一字符串字面量的引号使用规范
|
6 months ago |
韩天峰
|
d0d66a0982
|
feat(compiler): 实现对 static 关键字的支持
- 修改 getNativeStaticMethod 方法为 getNativeMethod,增加继承链方法查找逻辑
- 添加对 static::class 和 self::class 的差异化处理
- 实现静态编译时对 static 调用的正确解析和转换
- 增加对 late static binding 的支持
- 添加相关辅助函数 php_get_called_class 和 php_get_called_ce
- 更新测试用例验证 static 关键字功能正确性
|
6 months ago |
韩天峰
|
7871eb2820
|
feat(compiler): 添加类方法重写支持和动态绑定机制
- 新增 parentClass 属性用于存储父类名称
- 实现 classMethodOverride 和 classExtends 数组用于检测方法重写
- 添加方法重写预处理逻辑,支持子类和父类同名方法的动态绑定
- 修复静态方法调用时的对象指针传递问题
- 增强方法查找机制,支持向上递归查找父类方法
- 添加测试用例验证方法重写功能的正确性
- 改进错误提示信息,提供更准确的错误定位
|
6 months ago |
韩天峰
|
1ce204d4b2
|
fix(aot): 修复AOT编译中的命名空间和静态调用问题
- 修正了getNativeName方法中类名和命名空间参数的顺序
- 添加了对包含反斜杠的函数名进行转义处理
- 修复了常量解析时的类名获取逻辑
- 正确实现了魔术常量__FUNCTION__、__CLASS__和__METHOD__的完整命名空间支持
- 修正了self和static关键字的处理,使其在AOT编译时都使用编译期确定的类名
- 修复了方法调用时类名的命名空间解析和占位符生成逻辑
- 添加了对静态属性访问的支持
|
6 months ago |
韩天峰
|
4d0a44fdbd
|
feat(compiler): 实现静态属性支持和构造函数功能
- 添加静态属性列表存储和初始化机制
- 实现 self 关键字解析为带命名空间的类名
- 在扩展模板中添加静态属性设置代码生成
- 支持构造函数的参数传递和属性初始化
- 过滤抽象方法避免不必要的解析处理
- 添加 bool 类型和构造函数相关的测试用例
|
6 months ago |
韩天峰
|
989939bb90
|
feat(aot): 支持PHP数组展开语法和复杂数组解析
- 实现了数组展开运算符(...)的解析支持
- 添加了混杂数组赋值的多行插入处理逻辑
- 支持动态键名和不同类型的键值组合
- 优化了数组解析的类型判断和内存管理
- 新增了三个数组相关功能测试用例
- 提取了函数参数默认值解析的公共方法
- 修复了类属性默认值null判断的问题
|
6 months ago |
韩天峰
|
34f157871d
|
test(compiler): 添加空合并赋值操作符测试用例并优化编译逻辑
- 添加 assign_coalesce_002.phpt 测试文件验证空合并赋值功能
- 在 AstNodeType 中新增 isConstFetch 和 isAssignOp 辅助方法
- 优化 CompilerBase 中的空合并赋值编译逻辑,使用三元运算符替代 if 语句
- 修复局部变量检测和类型推断相关问题
|
6 months ago |
韩天峰
|
b1662f3cc9
|
feat(php): 添加属性访问表达式支持
- 添加 EXPR_PROPERTY_FETCH 常量用于标识属性访问表达式
- 在解析器中实现对 Expr_PropertyFetch 节点的支持
- 使用 parseIdentifier 方法替代 convertToObject 方法处理对象属性访问
- 添加对象链式访问操作符测试用例
- 支持属性连接赋值操作符 (.=) 的解析和执行
|
6 months ago |
韩天峰
|
a0d750eea0
|
fix(compiler): 修复函数调用返回类型检测和命名空间解析问题
- 移除多余空行避免返回类型检测中断
- 添加绝对命名空间函数的特殊处理逻辑
- 修复函数调用解析中对完全限定名的支持
- 更新存根文件生成命令行参数传递机制
- 优化源码目录跟踪和头文件路径生成逻辑
|
6 months ago |
韩天峰
|
70eccf59fc
|
feat(closure): 添加闭包生成功能并支持占位符调用
- 实现 ClosureGenerator trait 来统一处理闭包生成逻辑
- 添加 ArrowFunction 和 Closure 表达式的解析方法
- 引入 PlaceHolder 异常用于处理可调用占位符场景
- 添加 PlaceHolderGenerator trait 处理占位符闭包生成
- 实现 genCharPtr 和 genArray 工具函数
- 更新 FuncCall 和 StaticCall 处理以支持占位符语法
- 修复变参占位符的错误处理机制
|
6 months ago |
韩天峰
|
31a3275ecf
|
feat(compiler): 添加对PHP引用参数的支持
- 在ArgInfo类中新增byRef属性用于标识引用参数
- 重命名parseFunctionDeclaration方法为parseFunctionDecl
- 移除引用参数不支持的限制检查
- 在参数解析时添加对byRef的处理逻辑
- 为闭包函数添加引用参数的错误检查
- 在参数类型转换时添加引用参数的特殊处理
- 更新函数调用时参数获取的逻辑以支持引用参数
- 添加引用参数的测试用例
|
6 months ago |
韩天峰
|
0e44edd42c
|
feat(php): 添加静态变量支持功能
- 新增 STATIC_VAR 常量用于标识静态变量前缀
- 添加 staticVars 属性用于跟踪静态变量状态
- 在 resetFunction 中重置静态变量数组
- 实现 getStaticVarName 方法生成静态变量名称
- 修改 parseVariable 处理静态变量解析逻辑
- 添加 addStaticVar 和 hasStaticVar 辅助方法
- 更新 hasVar 检查静态变量存在性
- 实现静态变量初始化代码生成逻辑
- 添加静态变量测试用例验证功能正确性
|
6 months ago |
韩天峰
|
b6e2741c31
|
feat(compiler): 添加对变量表达式检查和无变量捕获的支持
- 在方法调用解析中添加了变量表达式检查功能
- 实现了未定义变量错误提示机制
- 更新异常捕获解析以支持无变量名的捕获语法
- 添加了临时变量名生成器来处理匿名捕获变量
- 新增 try-catch-2 测试用例验证捕获语法兼容性
|
6 months ago |
韩天峰
|
3641cb3184
|
feat(php): 添加对箭头函数和接口声明的支持
- 实现了箭头函数语法解析和C++代码生成
- 在编译器基础类中添加了对Expr_ArrowFunction节点类型的处理
- 新增parseArrowFunction方法用于处理箭头函数的参数和返回值
- 更新预处理器跳过接口声明的处理逻辑
- 修改测试桩生成脚本以支持声明和分组使用语句的处理
|
6 months ago |
韩天峰
|
ac3351b5f4
|
feat(compiler): 支持PHP变长参数展开语法
- 修改parseCallArgs方法以支持...操作符参数展开
- 添加对变长参数展开位置限制的验证逻辑
- 实现变长参数展开的临时变量生成机制
- 更新函数调用参数解析以兼容数组参数传递
- 添加parseArrayArg辅助方法处理数组参数解析
- 为变长参数展开功能增加单元测试用例
- 修复多处函数调用参数格式化问题
|
7 months ago |
韩天峰
|
54c43dc691
|
feat(php): 支持 PHP 命名参数功能
- 实现命名参数解析和重排逻辑
- 添加函数定义参数信息获取功能
- 支持命名参数与位置参数混合使用
- 确保参数按正确顺序传递给原生函数
- 添加命名参数测试用例
- 提供命名参数使用示例
|
7 months ago |
韩天峰
|
aa6d81d2a7
|
feat(compiler): 添加可变参数支持功能
- 在 ArgInfo 类中添加 variadic 属性用于标识可变参数
- 实现编译器对可变参数的验证逻辑,确保可变参数位于最后位置
- 修改参数类型处理逻辑,将可变参数转换为数组类型
- 更新函数调用参数解析,支持可变参数的展开和传递
- 在翻译器中实现可变参数的 C++ 代码生成逻辑
- 添加遍历可变参数的循环处理机制
- 新增可变参数功能的测试用例和示例文件
- 完善参数列表生成时对可变参数的特殊处理
|
7 months ago |
韩天峰
|
9c51551567
|
refactor(php): 重构编译器基础类中的类和函数指针获取方法
- 将 getClassEntryPtr 方法重命名为 getClassId 并修改返回值为整数ID
- 将 getFuncPtr 方法重命名为 getFuncId 并修改返回值为整数ID
- 添加新的 getMethodPtr 方法用于获取方法指针
- 重新实现 getClassEntryPtr 和 getFuncPtr 方法,基于新的ID获取方法
- 更新方法调用逻辑以使用新的方法指针机制
- 在C++模板中添加 php_get_method 函数实现
- 更新PHP AOT辅助头文件中的函数声明
- 优化Reflection类中的反射异常处理和参数类型引用
|
7 months ago |
韩天峰
|
257616d571
|
refactor(compiler): 优化方法调用和参数解析逻辑
- 移除编译器中无用的原生函数检查逻辑
- 更新反射参数检查以支持类方法参数引用
- 添加类型化对象的方法调用处理机制
- 实现匿名类实例继承相关功能
- 修复数组元素递增递减操作处理
- 优化ZipArchive等扩展函数的引用参数处理
- 添加私有属性名称解混淆测试用例
- 扩展反射类以支持类方法参数获取
|
7 months ago |
韩天峰
|
35a81376a1
|
test(anonymous): 添加匿名类相关测试用例
- 新增 001.phpt 测试基础匿名类声明功能
- 新增 002.phpt 测试匿名类继承和实现接口功能
- 新增 003.phpt 测试匿名类重复使用场景
- 新增 004.phpt 测试匿名类继承机制
- 修改编译器基类中类名获取逻辑,支持反斜杠开头的命名空间类名
- 修复函数中声明类的错误检查逻辑
- 改进变量检测逻辑以避免未定义变量错误
- 修复类定义代码中的数组初始化逻辑
- 为类名添加反斜杠前缀以确保正确引用
- 添加静态调用注释以改善调试信息
- 调整枚举测试文件中函数位置以符合预期结构
|
7 months ago |
韩天峰
|
aa6be88c6c
|
feat(php): 添加对PHP枚举类型的支持
- 在ClassDef实体中添加enum属性用于标识枚举类
- 修改编译器基类以支持枚举常量访问的特殊处理
- 移除旧的枚举示例文件并添加新的测试用例
- 更新翻译器以识别和标记枚举类型的类定义
|
7 months ago |
韩天峰
|
9de6ca6a41
|
feat(php): 添加枚举支持并优化代码打印功能
- 引入 PhpParser\PrettyPrinter 用于代码格式化
- 添加 PrettyPrinter 实例变量用于代码美化输出
- 实现 parseEnum 方法处理枚举语法解析
- 添加 genEmbeddedCode 方法生成嵌入式代码
- 在语法解析器中添加 Stmt_Enum 分支处理
- 修复 parseStatic 方法参数类型声明
- 优化原生静态方法调用逻辑增加空值检查
- 添加枚举功能的测试用例文件
|
7 months ago |
韩天峰
|
e0a4e2f977
|
feat(compiler): 添加空合并赋值运算符支持并优化变量检查
- 实现了 ??= 运算符的解析和编译功能
- 添加了变量存在性检查的改进实现
- 增加了左值有效性验证确保赋值操作合法
- 更新了测试用例覆盖空合并赋值的各种场景
- 修复了 stray code 检查的错误定位问题
- 在编译器基类中增加了 isset 和 empty 操作常量定义
|
7 months ago |
韩天峰
|
f2e7b70043
|
feat(compiler): 添加闭包表达式支持
- 在 CompilerBase.php 中添加对 Expr_Closure 节点类型的解析处理
- 实现 parseClosure 方法来编译 PHP 闭包为 C++ 代码
- 添加临时变量生成和缩进级别管理逻辑
- 处理闭包参数和 use 子句中的变量捕获
- 验证闭包中使用的变量是否已定义
- 添加闭包示例文件 closure.php 和对应测试文件
- 修复 fcall.php 中的调试输出注释问题
|
7 months ago |
韩天峰
|
7e5b6ef045
|
fix(const): 修复命名空间常量定义和引用问题
- 在常量名称前添加命名空间前缀以支持命名空间常量
- 将常量信息存储结构扩展为包含命名空间和名称字段
- 使用转义后的命名空间名称作为常量查找键值
- 更新模板中常量遍历变量名以避免混淆
- 修复常量定义时的字符串转义处理
- 添加命名空间常量测试用例验证功能
- 实现参数信息存根文件名生成方法
|
7 months ago |
韩天峰
|
288021d16c
|
feat(compiler): 添加对孤立代码的检测和错误处理
- 在 CompilerBase 中添加 foundStrayCode 方法用于报告孤立代码错误
- 在 Preprocessor 中为 Stmt_Expression 类型添加孤立代码检测
- 防止在扩展模式下生成名为 main 的函数
- 添加 empty-2.phpt 测试用例验证空值合并操作符功能
|
7 months ago |
韩天峰
|
209b9cb81d
|
test(aot): 添加对象链接操作符测试用例
- 创建了 TestAttrRef 类用于测试属性引用功能
- 实现了构造函数中的数组排序和切片操作逻辑
- 添加了主函数用于实例化测试对象并传入参数
- 定义了预期输出验证数组操作结果的正确性
|
7 months ago |
韩天峰
|
2acc84659a
|
feat(compiler): 添加原生静态方法查找和数组维度引用功能
- 新增 getNativeStaticMethod 方法用于查找原生静态方法
- 添加对数字类型变量使用 [] 操作的错误检查
- 实现数组维度获取的引用参数处理逻辑
- 支持静态方法调用时的原生函数优化
- 添加 item-ref 测试用例验证数组引用功能
|
7 months ago |
韩天峰
|
a39a2e389a
|
fix(php): 修复字符串偏移设置功能
- 移除了调试用的 var_dump 语句
- 在数组维度存储解析中正确管理 inAssignExpr 状态
- 修正测试文件中的测试名称描述
|
7 months ago |
韩天峰
|
2d81a3975d
|
feat(php): 添加字符串数组索引赋值支持
- 实现字符串类型的数组维度获取解析功能
- 添加字符串索引赋值的类型检测和错误处理
- 支持字符串的 offsetSet 操作转换
- 新增字符串数组索引赋值的功能测试用例
- 处理字符串索引为 null 时的错误情况
- 实现字符串变量类型检查机制
|
7 months ago |
韩天峰
|
47e85c9de4
|
refactor(Php): 移除 strlen 等函数的特殊优化处理
- 从 FuncCallOptimizer 中移除了对 strlen、sizeof、count 函数的特殊转换逻辑
- 在 MagicMethodDetector 中为 __call 方法添加了参数类型验证
- 为 __toString、__serialize、__unserialize 等魔术方法添加了返回值和参数类型验证
- 为 __isset、__unset、__set_state、__debugInfo 等魔术方法添加了类型检查规则
- 添加了字符串类型参数验证以确保魔术方法符合 PHP 规范
- 添加了数组类型返回值验证以确保序列化相关方法正确实现
|
7 months ago |
韩天峰
|
c3eb2d2f3f
|
refactor(php): 重构 isset 和 empty 表达式解析逻辑
- 将 parseIsset 方法重构为只支持单个变量检查
- 添加 parseVarCheckExpr 通用方法处理 isset 和 empty 操作
- 移除 parseEmpty 方法中的重复代码逻辑
- 支持静态属性获取表达式的 isset 和 empty 检查
- 更新错误消息模板以反映正确的操作符名称
- 添加 isset-test.phpt 测试文件验证功能
- 扩展 empty-test.phpt 包含静态属性测试用例
|
7 months ago |
韩天峰
|
423c10fe47
|
feat(compiler): 实现空值检查表达式解析功能
- 添加了对复杂嵌套表达式的 empty() 函数支持
- 实现了数组维度获取和属性访问的解析逻辑
- 添加了 SkipException 类用于跳过错误节点处理
- 优化了全局变量访问的错误处理机制
- 增强了类型转换和函数调用的参数处理
- 更新了测试用例验证空值检查功能正确性
- 修复了编译器在处理未定义类时的错误判断
|
7 months ago |
韩天峰
|
57e1790639
|
feat(compiler): 实现对静态属性和常量的原生支持
- 添加 hasConstant、getMethod 和 getConstant 方法到 ClassDef 类
- 在 CompilerBase 中实现静态属性和常量的原生解析功能
- 添加 parseNativeStaticPropertyFetch 和 findNativeStaticProperty 方法
- 修改 getFuncPtr 方法以支持宏参数
- 实现对类常量和静态属性的直接访问优化
- 添加对后置操作符中属性获取的支持
- 更新 examples/micro_bench.php 测试用例以验证功能
- 在 PropertyDef 中添加 isStatic 方法判断静态属性
- 重构预处理器对常量定义的处理逻辑
|
7 months ago |
韩天峰
|
38110f67d5
|
refactor(php): 重构PHP到C++编译器实现细节
- 更新PHP CS Fixer配置中的类属性分离规则
- 简化ArgInfo、ClassDef、ClassLikeDef等数据结构定义
- 重命名CLASS_ENTRY_MAP为CLASS_MAP并更新相关引用
- 移除多余变量声明并优化全局变量处理逻辑
- 实现超级全局变量检测和初始化功能
- 添加对$GLOBALS数组访问的支持
- 优化函数调用代码生成逻辑
- 添加全局变量测试用例验证功能
- 清理无用常量和变量声明简化代码结构
|
7 months ago |
韩天峰
|
1c074d140e
|
feat(php): 实现PHP右结合赋值操作符支持
- 添加isArrayDimFetch方法用于检查数组维度获取表达式
- 实现parseRightAssociativeAssign方法处理右结合赋值链
- 重构parseAssign方法以支持嵌套赋值表达式解析
- 更新parseArrayDimStore方法处理空维度读取错误
- 添加右结合赋值功能的测试用例和示例文件
|
7 months ago |
韩天峰
|
9465caea14
|
feat(php): 添加属性访问控制和对象类型检查功能
- 在 ClassDef 中添加 hasProperty 和 getProperty 方法用于属性访问
- 在 CompilerBase 中添加 isTypedObject 方法检查对象类型
- 将 offsetGetIndirect 替换为 item 方法统一访问接口
- 实现 getPropertyIdentifier 方法支持属性标识符解析
- 添加对私有/受保护属性访问权限的检查和错误处理
- 将 getPropertyIndirect 替换为 attr 方法进行属性访问
- 添加属性引用访问支持通过 attrRef 方法实现
- 更新 identifierToStr 参数类型为 NodeAbstract
- 在 PropertyDef 中添加访问修饰符检查方法(isPrivate/isProtected/isPublic)
- 添加属性引用测试用例验证功能正确性
|
7 months ago |
韩天峰
|
d3360d2f38
|
fix(php): 修复数组类型返回和include表达式处理
- 将 Expr_Array 的类型返回从 'php::Array' 改为 self::TYPE_ARRAY
- 将字符串 'array' 的类型映射从 'php::Array' 改为 self::TYPE_ARRAY
- 更新 parseInclude 方法参数类型为 Node\Expr\Include_
- 添加对不同 include 类型 (include, require, include_once, require_once) 的支持
- 在 include 表达式中传递正确的类型参数
- 添加 include 测试用例和相关测试文件
|
7 months ago |
韩天峰
|
f38098523f
|
refactor(compiler): 重构PHP编译器参数类型解析逻辑
- 移除未使用的 $varTypes 属性
- 将 parseType 方法重命名为 parseParameterType 并添加参数支持
- 修复 void 类型作为参数类型的错误处理
- 更新模块注册方式从临时模块到持久模块
- 添加目标名称中特殊字符的替换处理
- 为参数类型解析添加更准确的对象类型映射
|
7 months ago |
韩天峰
|
11828d3b5a
|
feat(compiler): 添加对 any 函数的支持
- 在编译器中实现 any 函数的解析和处理逻辑
- 添加对 var 类型常量的支持
- 扩展测试用例以验证 any 函数的功能
|
7 months ago |
韩天峰
|
e824c5d7c0
|
fix(compiler): 修复变量赋值和属性访问的类型检查问题
- 添加了对属性赋值操作的类型检测支持
- 实现了模运算符的类型安全处理
- 添加了布尔值转义函数 escapeBool
- 修改 parsePropertyFetch 方法以支持赋值操作标识
- 优化 foreach 循环中的变量检查逻辑
- 添加引用赋值的类型验证
- 将 writeFile 方法改为公有以便外部调用
- 添加 checkVar 方法进行变量类型安全检查
- 更新测试文件中的变量命名以避免冲突
- 修复对象链接测试中的属性访问问题
|
7 months ago |
韩天峰
|
58f9cb4c28
|
fix(php): 修复PHP引用类型处理问题
- 将TYPE_REF常量值从'php::Var'更改为'php::Ref'
- 修改引用参数传递逻辑,使用'&'操作符而不是解引用
- 将post-increment操作符错误处理从parsePostOp改为fatalError
- 修复变量赋值时的引用处理逻辑
- 添加引用操作符测试用例
|
7 months ago |
韩天峰
|
abb5dbc6d8
|
fix(php): 修复后置递增递减操作符解析问题
- 使用 str_repeat($op, 2) 正确生成后置操作符代码
- 修复非变量表达式的错误处理逻辑
- 添加后置递增递减操作符的测试用例
|
7 months ago |
韩天峰
|
f48b1f4781
|
refactor(php): 重构PHP编译器中的赋值表达式处理逻辑
- 添加 inAssignExpr 属性来跟踪赋值表达式状态
- 修改 parseAssign 和 parseAssignRef 方法以设置赋值表达式标志
- 将 parseAssign 中的数组维度赋值逻辑提取到 parseAssignArrayDim 方法
- 将属性获取逻辑从 offsetGet 更改为 offsetGetIndirect
- 移除不正确的静态属性获取处理代码
- 添加 object link 和 property assign op 测试用例
|
7 months ago |
韩天峰
|
f8100988c4
|
update mixed
|
8 months ago |
韩天峰
|
0033a243d0
|
添加更多测试,php std 标准库测试,支持 list 语法
|
8 months ago |
韩天峰
|
73f84217db
|
支持静态类属性读写语法
|
8 months ago |
韩天峰
|
5f14139ace
|
Native 常量处理
|
8 months ago |