韩天峰
|
4470c4597d
|
fix(std): 修复标准数组布尔值比较问题
- 添加了测试用例验证浮点数和布尔数组的功能
- 实现了标量布尔值检测方法 isScalarBool
- 添加了布尔值获取方法 getBoolValue
- 定义了 VALUE_FALSE 和 VALUE_TRUE 常量
- 实现了 parseCompareExpr 方法处理布尔值比较
- 修改相等和不等操作符解析使用新的比较表达式解析
- 重构了相同操作符解析逻辑并移除了重复代码
|
4 months ago |
韩天峰
|
3f9f87ba7f
|
fix(tests): 修正数组越界测试的期望输出格式
- 移除冗长的数组结构化输出格式
- 简化为直接整数值输出
- 保留数组索引越界的异常信息
- 更新测试断言以匹配实际运行结果
|
4 months ago |
韩天峰
|
805f2a62ee
|
refactor(compiler): 优化标准数组访问的类型检测和表达式解析
- 移除 phpx_std_array.h 头文件引用
- 将表达式解析提取为独立变量以提高可读性
- 添加标准数组维度获取的属性缓存机制
- 实现完整的数组维度访问层级检测
- 修复参数传递中的数组转换逻辑
- 优化嵌套数组访问的解析流程
|
4 months ago |
韩天峰
|
daa5379e46
|
feat(std-array): 添加标准数组类型支持
- 添加了 TYPE_STD_ARRAY 常量定义
- 在全局头文件列表中加入 phpx_std_array.h
- 修复了嵌套数组索引解析逻辑,使用 convertIntExpr 方法转换整数表达式
- 优化了 std::array 函数参数解析,直接获取数值而非解析标量值
- 使用 TYPE_STD_ARRAY 常量替换硬编码的 std::array 字符串
- 修改返回值为注释格式的声明字符串以便调试
|
4 months ago |
韩天峰
|
673f3b3dc5
|
refactor(preprocessor): 重构参数声明生成逻辑
- 添加 genArgumentDeclaration 方法统一处理参数声明格式
- 将参数声明逻辑从多个位置提取到独立方法中
- 简化可变参数和普通参数的声明处理流程
- 更新版本号从 1002 到 103
- 删除废弃的示例文件 test1.cc
- 添加混合类型声明的测试用例
|
4 months ago |
韩天峰
|
436e09f6ae
|
chore(deps): 更新 swoole/phpx 依赖版本
- 将 swoole/phpx 从 ~2.1.3 更新到 ~2.1.5
- 添加动态调用方法测试用例 method-002.phpt
- 新增命名参数调用功能的测试验证
- 添加对象动态方法调用的相关测试代码
|
4 months ago |
韩天峰
|
69886abb5d
|
feat(build): 添加 Windows 平台编译支持
- 实现了 Windows 平台检测和 MSVC 编译器配置
- 添加了 Windows 特定的包含路径和链接库处理
- 实现了 Windows 和 Unix 平台的条件编译选项
- 适配了 Windows 文件路径分隔符和文件扩展名
- 添加了 Windows 下 PHP 目录检测逻辑
- 在 Windows 平台下跳过 clang-format 格式化步骤
|
4 months ago |
韩天峰
|
c4b7e3022a
|
fix(php): 修复函数use语句解析问题
- 修正useFunctions映射返回值,确保函数名正确拼接
- 修复use语句类型判断逻辑,处理未知类型情况
- 添加any函数polyfill支持
- 新增函数use测试用例验证功能正确性
|
4 months ago |
韩天峰
|
608db0e8c2
|
fix(php): 修复引用参数传递和模块命名问题
- 添加标量值作为引用参数时的错误检查
- 为动态调用类添加占位符处理
- 统一模块名称前缀为 app_
- 简化模块名称生成逻辑
- 添加动态调用测试用例
|
4 months ago |
韩天峰
|
2912b40b0f
|
feat(compiler): 添加原生类型支持和属性获取功能
- 在编译器基础类中添加了 Expr_PropertyFetch 表达式处理逻辑
- 实现了原生属性变量检测和类型推断功能
- 新增了属性获取表达式的原生属性变量标记机制
- 更新了多个示例文件以使用 native_types 命名空间
- 添加了默认数组属性测试用例验证功能
- 集成了 polyfills 支持并在主入口点传递命令行参数
|
4 months ago |
韩天峰
|
c86059217d
|
feat(compiler): 优化对象属性访问性能
- 引入 PropertyDef 实体类来管理属性定义
- 添加 OBJECT_PROP 常量用于标识对象属性
- 修复 findNativeProperty 方法中的参数传递问题
- 实现 native 属性类型的引用优化,提升 this_ 对象的属性访问性能
- 为整型和浮点型属性创建直接引用访问机制
- 改进属性查找逻辑,支持 nativePropertyDef 和 nativeClassDef 属性
- 在编译代码中添加对象属性引用声明,优化运行时性能
- 添加测试用例验证默认数组属性功能
|
4 months ago |
韩天峰
|
12ff420d87
|
refactor(config): 将编译器选项配置迁移至常量类
- 移除独立的 compiler_options.php 配置文件
- 将编译器选项定义移至 Php/Constants.php 中的 COMPILER_OPTIONS 常量
- 更新 CompilerBase.php 中的 getNamespacedClassName 调用方式
- 修改 Constants.php 中的 UNSUPPORTED_FUNCTIONS 为数组类型
- 更新 Translator.php 中配置加载方式,使用 Constants::COMPILER_OPTIONS 替代 require
- 添加 objval 函数的相关测试用例
|
4 months ago |
韩天峰
|
5bf12a10ed
|
feat(php): 添加对 trait 魔术常量 __TRAIT__ 的支持
- 在 CompilerBase 中添加 Scalar_MagicConst_Trait 的解析支持
- 为 __TRAIT__ 常量实现作用域检查逻辑
- 为 __CLASS__ 常量添加 trait 环境下的返回逻辑
- 在 Preprocessor 中添加类属性钩子不支持的错误提示
- 添加 trait 魔术常量的功能测试用例
- 更新 trait 示例代码以展示魔术常量使用
|
4 months ago |
韩天峰
|
37bfc24432
|
test(aot): 更新 trait 测试用例的期望输出
- 修改测试标题为 trait full class name
- 添加对象实例的期望输出结构
- 包含属性值 Hello 1 的字符串验证
- 完善命名空间类的输出格式
|
4 months ago |
韩天峰
|
ffdf4c6653
|
fix(traits): 解决trait中方法参数类型解析问题
- 添加trait注入class时使用完整类名的处理逻辑
- 重构参数类型解析逻辑,统一使用parseTypeDecl方法
- 修复void/never类型作为参数类型的错误检查
- 简化类型判断和类名获取流程
- 添加测试用例验证trait方法冲突处理
|
4 months ago |
韩天峰
|
799aa629c0
|
feat(php): 添加 refval 函数支持引用传递功能
- 新增 isRefvalCall 方法检测 refval 函数调用
- 在编译器中添加对 refval 函数的特殊处理逻辑
- 实现 refval 函数调用的参数解析和优化
- 添加 refval 函数的 polyfill 实现
- 在 stub 生成中使用 refval 包装声明字符串
- 添加 refval 函数的测试用例
|
4 months ago |
韩天峰
|
05854e55be
|
refactor(php): 重构PHP编译器中的引用参数处理逻辑
- 将引用参数处理逻辑提取到独立的parseArgRefVar方法中
- 简化了Scalar_String类型处理时的genCharPtr调用
- 添加了对refval函数的支持,允许通过函数调用传递引用参数
- 移除了重复的引用参数处理代码,提高代码复用性
- 修复了eval函数中使用的identifierToStr方法调用
- 添加了refval函数的测试用例
|
4 months ago |
韩天峰
|
c94d7afdba
|
fix(compiler): 修复PHP编译器中的类型检查和表达式解析问题
- 移除不再使用的常量定义 EXPR_VARIABLE、EXPR_NEW、EXPR_ARRAY_DIM_FETCH、EXPR_PROPERTY_FETCH
- 为 parseExpr 方法添加返回类型声明 string
- 将 switch 语句中的常量引用改为直接字符串引用
- 在变量重新赋值时添加对象到数组的类型检查限制
- 禁止对象与数组之间的相互转换
- 修复变量类型检测中的常量引用问题
- 删除未使用的 leftExprType 变量
- 使用 isArrayDimFetch 方法替代类型比较
- 优化布尔取反表达式的解析逻辑
- 添加对 self 和 parent 关键字的支持
- 重构 unset 语句的类型判断逻辑
- 修复 foreach 循环中数组维度获取的判断方式
- 修正 Translator 类中的格式化和类型引用问题
|
4 months ago |
韩天峰
|
5b66ef2161
|
fix(trait): 解决trait中self关键字引用问题
- 在trait中使用self时动态获取类名而不是固定为当前类
- 添加对trait定义的检测逻辑
- 确保trait中的常量访问正确解析
- 修复了method conflict测试用例
- 添加了traits测试文件验证功能正确性
|
4 months ago |
韩天峰
|
1567ad2f88
|
fix(php): 解决匿名类继承父类名称解析问题
- 在编译器中为匿名类继承的父类添加全限定名称转换
- 修复了当匿名类继承使用use导入的类时的名称解析错误
- 添加了对继承类名的命名空间处理逻辑
- 确保匿名类能够正确继承并访问父类方法
|
4 months ago |
韩天峰
|
9d9556929f
|
test(aot): 添加类常量测试用例并修复返回值解引用问题
- 新增 class const 001 测试用例验证 AOT 编译功能
- 在返回值处理后添加 php::deref(return_value) 确保正确解引用
- 修复了函数返回值可能存在的内存引用问题
- 测试用例覆盖了数组排序和引用传递场景
|
4 months ago |
韩天峰
|
ee3dbc9717
|
feat(compiler): 添加项目配置和扩展忽略功能
- 在 Translator 类中新增 ignoreExtensions 属性用于存储忽略的扩展
- 修改构造函数逻辑,将 main 函数从内部函数列表中移除
- 更新属性初始化代码,修复命名空间获取方式
- 在项目配置解析中添加对 ext-* 格式扩展的识别和忽略处理
- 添加测试用例验证对象构造器数组属性默认值功能
- 添加引用操作相关测试用例
- 新增项目配置文件示例
|
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 |
韩天峰
|
8865796b43
|
feat(php): 实现 compact 函数支持并增强函数重定义检查
- 添加 compact 函数的功能实现和语法优化
- 移除 UNSUPPORTED_FUNCTIONS 列表中的 compact 条目
- 在 Preprocessor 中添加防止重定义内置函数的检查
- 实现 genCompact 方法来处理 compact 函数调用
- 添加测试用例验证 compact 函数功能正确性
- 增强错误处理机制以捕获非法变量使用情况
|
4 months ago |
韩天峰
|
165d683f5a
|
fix(aot): 解决数组键为0时的C++编译歧义问题
- 添加VALUE_ZERO常量用于表示数字0键
- 实现parseArrayKey方法统一处理数组键解析逻辑
- 修复0键在C++中可能产生的空指针与整数二义性错误
- 更新数组测试用例以验证0键正确处理
- 重构数组键处理代码减少重复逻辑
- 添加相关测试文件验证不同数组场景
|
4 months ago |
韩天峰
|
2ca129b0c1
|
fix(php): 修复trait使用语法中未指定trait名称时的别名处理
- 当trait别名语法中未指定具体trait时,现在正确地为所有相关trait创建别名映射
- 添加对多重trait使用的支持,处理如 use TraitA, TraitB { method as newMethod } 的语法
- 修复预处理阶段无法获取trait方法列表时的映射逻辑
- 增加对trait优先级语法中缺少trait名称的错误检查
- 添加测试用例验证trait方法冲突处理的正确性
|
4 months ago |
韩天峰
|
1fbaa07820
|
fix(aot): 修复静态方法调用中的占位符生成问题
- 将 Symbol::getCalledCe() 替换为 Symbol::getCalledClass() 以正确处理静态方法调用
- 添加了针对 static::bar(...) 语法的测试用例
- 确保继承类中的静态方法调用能够正确解析到子类方法
|
4 months ago |
韩天峰
|
7e582d2eba
|
test(aot): 添加布尔属性测试用例
- 在测试类中添加了新的布尔类型属性 $attr5
- 更新了对象属性访问的测试方法以包含新属性
- 扩展了预期输出以验证布尔值的正确处理
- 确保 AOT 编译器正确处理布尔类型对象属性
|
4 months ago |
韩天峰
|
1e47ac0f53
|
fix(parser): 解决属性默认值处理中的类型转换和重复定义问题
- 添加对布尔类型默认值的正确处理和转换
- 修复常量表达式在字符串类型检查中的逻辑错误
- 增加对重复属性定义的检测和错误报告
- 优化数值类型默认值的处理流程
- 添加测试用例验证各种类型的属性默认值行为
|
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 |
韩天峰
|
1658dc2bfa
|
fix(trait): 修复trait方法冲突处理问题
- 添加trait别名功能支持
- 修复trait使用语法错误提示信息
- 更新trait方法命名规则避免冲突
- 添加trait方法调用前缀处理
- 优化trait适应性代码结构
- 修复trait方法重写逻辑
|
4 months ago |
韩天峰
|
aea979fae1
|
feat(php): 支持trait方法别名和访问修饰符转换
- 修改traitAliases数据结构以存储方法别名和新修饰符信息
- 实现trait方法别名时保留原始访问修饰符功能
- 添加对trait方法别名中newModifier属性的支持
- 更新翻译器中trait方法别名处理逻辑
- 扩展测试用例验证trait方法冲突解决机制
|
4 months ago |
韩天峰
|
57220d63b9
|
feat(trait): 实现 trait 使用适配器功能支持别名和冲突解决
- 添加 traitAliases 和 traitIgnored 属性到 ClassDef 存储适配器配置
- 实现 trait 方法别名映射功能 (as)
- 实现 trait 方法冲突解决机制 (insteadof)
- 在预处理器中解析 trait use 语句的适配器选项
- 在翻译器中应用 trait 别名和忽略规则
- 添加完整的 trait 冲突测试用例验证功能正确性
|
4 months ago |
韩天峰
|
6426046857
|
fix(generator): 解决接口中trait使用解析问题并完善trait别名处理
- 在gen_stub.php中添加对Interface_类型的检查,避免接口中使用trait时报错
- 移除Translator.php中generateStubFile的异常捕获逻辑,直接抛出异常
- 重构parseTraitUseForStub方法,支持完整的trait别名和冲突解决语法
- 添加getFullMethodName和parseTraitUseOptions辅助方法处理trait方法映射
- 完善trait属性、常量和方法的合并逻辑,支持insteadof和as关键字
- 更新parseTraitUse方法以正确处理trait别名映射关系
- 修复trait方法名称映射和代码生成中的多个边界情况
|
4 months ago |
韩天峰
|
88693dcc21
|
feat(aot): 添加对 PHP Trait 特性的支持
- 实现了 Trait 的基本语法解析和处理功能
- 添加了 trait 属性、方法、常量的继承机制
- 实现了 trait 使用时的命名空间解析
- 添加了类与 trait 同名成员的冲突处理逻辑
- 新增 trait 相关的测试用例
- 重构了类定义结构以支持 trait 类型判断
|
4 months ago |
韩天峰
|
36cf7dbf16
|
feat(aot): 添加对引用赋值和列表赋值的支持
- 实现了引用赋值功能,支持变量间的引用传递
- 添加了列表赋值解析逻辑,支持数组解构赋值操作
- 新增 isAssignExpr 方法用于判断赋值表达式类型
- 重构了赋值相关的编译逻辑,提高代码可读性
- 添加了多个测试用例验证引用和列表赋值功能
- 修复了动态调用中的参数展开问题
|
5 months ago |
韩天峰
|
58b6d4fad4
|
fix(compiler): 修复函数声明中的返回类型处理逻辑
- 在函数编译过程中添加了对返回类型的正确处理分支
- 确保当函数具有返回类型声明时不跳过必要的代码生成步骤
- 添加了测试用例验证可迭代类型声明的功能
- 修复了可能导致编译错误的条件判断逻辑
|
5 months ago |
韩天峰
|
485dce7b95
|
refactor(compiler): 优化编译器类方法处理逻辑
- 移除 CompilerBase.php 中不再使用的 method 属性初始化
- 为构造、析构、克隆方法添加无返回值类型限制
- 添加类和方法重置功能,确保状态正确清理
- 统一重复变量测试消息文本
- 调整静态绑定测试中的属性访问权限
- 新增受保护属性访问测试用例
|
5 months ago |
韩天峰
|
c67c3dfea9
|
refactor(compiler): 优化编译器内部结构并添加常量支持
- 添加 internalConstants 数组用于存储内部常量
- 重构变量赋值类型检查逻辑,简化条件判断
- 添加 isInternalInterface 和 isInternalConstant 辅助方法
- 优化参数类型解析过程,统一对象类型处理
- 改进常量查找逻辑,优先检查内部常量
- 增强类继承关系检查,支持内部接口验证
- 在预处理器中添加循环依赖检测和解决机制
- 引入 TopSort 库处理文件依赖排序问题
- 优化反射类,添加内部接口识别功能
- 初始化内部常量列表,提升常量处理性能
- 添加测试用例验证类型命中功能
|
5 months ago |
韩天峰
|
68155d0793
|
feat(compiler): 添加参数类型检查和对象类型验证功能
- 在ArgInfo类中新增class属性用于存储类型信息
- 修改parseParameterType方法以传递ArgInfo对象并设置类名
- 添加对stdClass和ArrayObject类型的测试用例
- 实现参数类型验证逻辑,确保对象类型匹配
- 增强类型转换过程中对对象类型的检测和错误提示
- 优化数组维度赋值的处理逻辑
|
5 months ago |
韩天峰
|
932dc070d8
|
feat(php): 支持命名参数调用功能
- 实现 parseNamedCallArgs 方法处理命名参数解析
- 添加命名参数语法验证和错误提示机制
- 生成临时变量存储命名参数数组结构
- 集成命名参数到函数调用参数解析流程
- 创建测试用例验证命名参数功能正确性
- 添加动态调用场景下的命名参数支持
|
5 months ago |
韩天峰
|
60298d9461
|
test(lang): 添加多个语言特性相关的回归测试
- 添加 bug27443 测试:验证 defined() 函数返回正确的布尔类型
- 添加 bug27535 测试:验证循环引用对象不会导致崩溃问题
- 添加 bug29944 测试:验证 switch 语句中定义函数的功能正常
- 添加 bug30578 测试:验证析构函数调用时机与输出缓冲区处理
|
5 months ago |