韩天峰
|
bf4c5a7852
|
fix(generator): 解决常量值格式化和命名空间解析问题
- 添加 formatConstValue 函数统一处理常量值格式化
- 修复类常量引用时的字符串转义问题
- 优化 getClassConstValue 方法的命名空间解析逻辑
- 添加 getNamespaceOfClass 工具方法获取类的命名空间
- 更新默认参数处理中的常量值获取方式
- 添加新的测试用例验证默认数组属性功能
|
3 months ago |
韩天峰
|
17fcb16aec
|
fix(php): 修复受保护方法访问检查和字符串转义问题
- 在 CompilerBase.php 中添加 classDef 检查以避免空指针错误
- 在 gen_stub.php 中对字符串表达式进行转义处理
- 将 Utils.php 中的 genCharPtr 和 escapeString 方法设为公共方法
- 添加测试用例验证默认数组属性功能
|
3 months ago |
韩天峰
|
ce7d254709
|
fix(compiler): 修复trait中类常量访问的命名空间解析问题
- 为getNamespacedClassName方法添加可选的当前命名空间参数
- 在gen_stub.php中传递当前类信息到getClassConstValue调用
- 在Translator.php中使用当前类的命名空间信息进行类常量查找
- 在类注册完成后清理ClassInfo::$currentClass避免污染
- 修复self引用时的默认值解析逻辑
|
3 months ago |
韩天峰
|
fb458405b8
|
允许类方法的默认参数使用类常量
|
3 months ago |
韩天峰
|
aa51b09fa9
|
fix(aot): 修复属性数组参数支持并调整编译器方法可见性
- 将 CompilerBase.php 中的 parseAssignOpBitwiseOr 方法从 private 改为 protected
- 将 CompilerBase.php 中的 error 方法从 protected 改为 public
- 在 gen_stub.php 中添加对属性数组参数的错误检查和提示
- 修复 Translator.php 中构建目录文件名使用 targetName 而非 getModuleName()
|
4 months ago |
韩天峰
|
c79573a9fe
|
fix(php): 修复编译器基类中的回溯打印和类型返回验证问题
- 将 printBacktraceOnError 默认值从 false 修改为 true
- 扩展子类作为父类返回时的类型检查,支持抽象类或接口
- 更新 SimpleType::fromNode 和 fromString 方法以支持 ArrayType 返回类型
- 修改测试用例中 ZipArchive 的路径处理逻辑
- 更新测试输出预期结果以匹配新的行为
|
4 months ago |
韩天峰
|
eaa1b4cd9a
|
fix(php): 修复编译器基类中的回溯打印和类型返回验证问题
- 将 printBacktraceOnError 默认值从 false 修改为 true
- 扩展子类作为父类返回时的类型检查,支持抽象类或接口
- 更新 SimpleType::fromNode 和 fromString 方法以支持 ArrayType 返回类型
- 修改测试用例中 ZipArchive 的路径处理逻辑
- 更新测试输出预期结果以匹配新的行为
|
4 months ago |
韩天峰
|
489020d5a3
|
refactor(parser): 优化类信息管理逻辑
- 将 ClassInfo::$currentClass 从对象引用改为字符串存储
- 移除 getCurrentClassName 方法并直接使用 $currentClass 属性
- 在类解析过程中正确设置当前类名字符串值
- 统一常量访问时的类名获取方式
- 简化类名字符串的存储和访问流程
|
4 months ago |
韩天峰
|
799aa629c0
|
feat(php): 添加 refval 函数支持引用传递功能
- 新增 isRefvalCall 方法检测 refval 函数调用
- 在编译器中添加对 refval 函数的特殊处理逻辑
- 实现 refval 函数调用的参数解析和优化
- 添加 refval 函数的 polyfill 实现
- 在 stub 生成中使用 refval 包装声明字符串
- 添加 refval 函数的测试用例
|
4 months ago |
韩天峰
|
8c4bfd6683
|
refactor(generator): 更新版本标志对象变量名并修正节点类型声明
- 将 $flags 变量重命名为 $obj 以避免与新创建的对象混淆
- 修正 enterNode 方法参数类型声明为 PhpParser\Node
|
4 months ago |
韩天峰
|
d8a828558d
|
refactor(generator): 将模板渲染改为直接代码生成
- 将 extension.cc.php 模板文件删除,改为在 PHP 代码中直接生成 C++ 代码
- 修改 equalsApartFromNameAndRefcount 方法可见性为 public
- 在函数查找逻辑中添加 TODO 注释说明必须为 public 方法的原因
- 添加 scope.php 示例文件用于测试作用域相关功能
- 删除 simple.php 中的冗余注释代码
- 移除模板渲染方法 render 的实现
|
4 months ago |
韩天峰
|
2e0cb9db4c
|
refactor(php): 优化匿名类名称解析逻辑
- 添加注释标记匿名类中相对类名转全限定名称的待办事项
- 修复类型声明中的命名空间引用问题
- 统一代码风格以提高可读性
|
4 months ago |
韩天峰
|
9744cc9e86
|
feat(build): 添加编译器构建功能并更新项目配置
- 新增 src/compiler-build.php 作为编译器入口文件
- 在 extension.cc.php 中添加 zend 异常处理保护机制
- 更新 project.yml 将项目类型从 ext 改为 bin,版本升级到 0.1.0
- 添加新的依赖文件路径到项目配置中
- 在 Php/Symbol.php 中添加 getClassEntrySafe 方法
- 修改 Php/Translator.php 使用安全的类入口获取方法
- 修复 __toString 方法的返回类型声明
- 添加 examples/error/impl.php 示例文件
|
4 months ago |
韩天峰
|
d1a06ac8d4
|
refactor(generator): 重构代码生成器的类信息管理和错误处理
- 使用 ClassInfo::getCurrentClassName() 方法替代静态属性访问
- 移除 ClassInfo::$currentClassName 静态属性,统一通过实例方法获取类名
- 在属性处理中引入 Skip 异常机制优化 AllowDynamicProperties 处理逻辑
- 统一字符串引用格式从双引号改为单引号以保持一致性
- 将条件声明的空数组初始化改为引用赋值以优化内存使用
- 移除未使用的 Unsupported 异常导入
- 将 Translator 中的异常抛出改为调用 fatalError 方法进行错误处理
|
4 months ago |
韩天峰
|
ee8c40698b
|
refactor(compiler): 重构标准库函数调用解析逻辑
- 提取 std 函数调用解析为独立方法 parseStdCall
- 简化 CompilerBase 中的类型转换处理逻辑
- 优化 gen_stub 中版本特性合并的实现方式
- 修改 getAllFuncInfos 方法返回值类型为数组合并
- 为 std::int 类型声明测试用例添加新断言
|
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 |
韩天峰
|
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 |
韩天峰
|
d85353f8eb
|
feat(compiler): 实现常量值解析和类型安全的值生成
- 在 ConstantDef 中添加 valueExpr 属性以支持表达式解析
- 将 gen_stub.php 移动到 src 目录并重构为可重用函数
- 实现 getClassConstValue 和 getConstValue 方法处理类常量和全局常量
- 添加 genCValue 工具方法支持不同类型的 C 值生成
- 修改预处理器存储常量表达式节点信息
- 更新编译器基础类 getRelativePath 方法为公共访问
- 优化 stub 文件生成逻辑使用内部函数替代 shell 执行
- 添加错误处理机制替换原有的直接退出方式
|
4 months ago |
韩天峰
|
7eed77138a
|
feat(php): 添加对 throw 语句的支持并改进 switch case 验证
- 在 AstNodeType 中添加 isThrowExpr 方法用于检测 throw 表达式
- 修改 CompilerBase 中的 switch case 验证逻辑,支持以 throw 结尾的 case
- 更新 parseThrow 方法以正确处理不同类型的异常对象
- 将最低 PHP 版本兼容性要求从 8.0 更新到 8.4
|
5 months ago |
韩天峰
|
fa2a1d286f
|
refactor(php): 优化对象包装器处理逻辑并修复字符串转义问题
- 简化了 CompilerBase.php 中的对象包装器逻辑,减少临时变量创建
- 为 gen_stub.php 中的 minimumPhpVersionIdCompatibility 设置默认值 PHP_80_VERSION_ID
- 在 Generator/Utils.php 的 escapeString 方法中添加 C++ 三字母词序列处理
|
5 months ago |
韩天峰
|
6a9b75d91f
|
test(aot): 添加闭包和自类型测试用例
- 添加 closure-002.phpt 测试闭包中 use 语法的功能
- 添加 func-self-type.phpt 测试 self 类型提示的功能
- 修改 gen_stub.php 中 self 类型处理逻辑
- 为 ClassInfo 类添加当前类名静态属性
- 更新类解析时设置当前类名信息
|
6 months ago |
韩天峰
|
7292635b3d
|
refactor(php): 重构PHP编译器代码结构
- 将字符串转义相关方法从CompilerBase移至Utils trait中
- 将括号检查和闭合表达式验证逻辑从CompilerBase移至Utils trait
- 修改genCharPtr方法支持字符串转义参数
- 添加genRawStr方法用于生成原始字符串字面量
- 在ClosureGenerator中正确保存和恢复对象状态
- 修复类名定义中的命名空间分隔符问题
- 更新模板文件中属性偏移量生成方式
- 修复内存分配中的类型转换问题
|
6 months ago |
韩天峰
|
35117d5c14
|
feat(compiler): 添加构造方法属性提升支持
- 在 ArgInfo 中添加 property 属性标识参数是否为属性提升
- 引入 PropertyPromotion trait 处理属性提升代码生成
- 在编译器中实现构造方法属性提升的解析和代码生成逻辑
- 支持将 promoted 参数转换为类属性定义
- 生成对应的 this_.setProperty 调用代码
- 更新函数信息解析以处理属性提升参数
|
6 months ago |
韩天峰
|
a0d750eea0
|
fix(compiler): 修复函数调用返回类型检测和命名空间解析问题
- 移除多余空行避免返回类型检测中断
- 添加绝对命名空间函数的特殊处理逻辑
- 修复函数调用解析中对完全限定名的支持
- 更新存根文件生成命令行参数传递机制
- 优化源码目录跟踪和头文件路径生成逻辑
|
6 months ago |
韩天峰
|
0e0f232571
|
feat(stubgen): 支持类常量表达式求值和类上下文跟踪
- 扩展常量表达式求值器以支持 ClassConstFetch 节点
- 实现对 self::CONST 和 CLASS::class 语法的解析和求值
- 添加当前类上下文跟踪机制以处理自引用常量
- 更新字符串和数值类型的表达式打印逻辑
- 增强错误处理以提供更详细的类型信息
|
6 months ago |
韩天峰
|
3641cb3184
|
feat(php): 添加对箭头函数和接口声明的支持
- 实现了箭头函数语法解析和C++代码生成
- 在编译器基础类中添加了对Expr_ArrowFunction节点类型的处理
- 新增parseArrowFunction方法用于处理箭头函数的参数和返回值
- 更新预处理器跳过接口声明的处理逻辑
- 修改测试桩生成脚本以支持声明和分组使用语句的处理
|
6 months ago |
韩天峰
|
0b5fb6fdd1
|
fix(stub): 修复生成的函数名大小写问题
- 在 getDeclarationName 方法中添加 strtolower 确保名称为小写
- 在 getArgInfoName 方法中添加 strtolower 确保下划线名称为小写
- 统一函数声明和参数信息名称的大小写处理逻辑
|
6 months ago |
韩天峰
|
7e5b6ef045
|
fix(const): 修复命名空间常量定义和引用问题
- 在常量名称前添加命名空间前缀以支持命名空间常量
- 将常量信息存储结构扩展为包含命名空间和名称字段
- 使用转义后的命名空间名称作为常量查找键值
- 更新模板中常量遍历变量名以避免混淆
- 修复常量定义时的字符串转义处理
- 添加命名空间常量测试用例验证功能
- 实现参数信息存根文件名生成方法
|
7 months ago |
韩天峰
|
8257f8a1c4
|
feat(generator): 添加常量符号注册功能
- 启用数组和对象常量定义支持
- 实现符号注册函数自动生成
- 添加 register_symbols 扩展模板支持
- 优化常量解析跳过复杂类型处理
- 新增模块符号注册函数匹配逻辑
|
7 months ago |
韩天峰
|
423c10fe47
|
feat(compiler): 实现空值检查表达式解析功能
- 添加了对复杂嵌套表达式的 empty() 函数支持
- 实现了数组维度获取和属性访问的解析逻辑
- 添加了 SkipException 类用于跳过错误节点处理
- 优化了全局变量访问的错误处理机制
- 增强了类型转换和函数调用的参数处理
- 更新了测试用例验证空值检查功能正确性
- 修复了编译器在处理未定义类时的错误判断
|
7 months ago |
韩天峰
|
3c63ff2cfd
|
feat(stub): 优化常量表达式打印逻辑
- 添加对常量表达式类型的支持
- 实现整数常量的类型后缀处理
- 添加对PHP_INT_MIN和PHP_INT_MAX的特殊处理
- 保留原有表达式打印功能的兼容性
- 提升代码的可读性和维护性
|
7 months ago |
韩天峰
|
625604d375
|
refactor(php): 优化编译器基础类中的变量赋值和数组维度获取逻辑
- 简化 Expr_Assign 和 Expr_AssignRef 的返回逻辑
- 在 checkVarFn 回调函数中添加对 isVarExpr 的检查以确保变量存在
- 移除 parseAssign 函数中关于数组维度获取和静态属性获取的特殊处理逻辑
- 在 parseArrayDimFetch 方法中添加对未定义变量的错误检查
- 添加对全局常量的处理支持
- 更新主函数中的全局变量声明以包含 definedConstants
- 在启动时初始化 definedConstants 变量
|
7 months ago |
韩天峰
|
c58a85baa2
|
fix(stub): 修复常量生成中的表达式类型检查问题
- 添加了对非标量字符串表达式的类型验证
- 修复了常量类型未实现时的错误消息显示
- 统一使用 String_ 类型检查替代完整命名空间
- 将 shell_exec 替换为 passthru 以获取编译返回状态
- 添加编译失败时的错误提示机制
|
7 months ago |
韩天峰
|
13a5849584
|
代码格式化,命名空间处理
|
7 months ago |
韩天峰
|
04fdbcc0e4
|
feat(php): 添加类构造函数需求检查和数组属性默认值处理
- 在 ClassDef 中添加 requireCtor 属性用于标记是否需要构造函数
- 简化数组类型默认值的生成逻辑,使用 ZVAL_EMPTY_ARRAY 替代复杂的临时变量处理
- 添加构造函数需求检查,在类使用非空数组作为属性默认值时验证构造函数存在性
- 在构造函数中初始化数组类型的属性默认值到对象属性
- 检测表达式数组类型并设置类构造函数需求标志
|
7 months ago |
韩天峰
|
37d0172164
|
```
refactor(build): 优化编译链接逻辑并更新错误检查方式
- 修改 parseLibs 方法,根据构建模式动态添加 php 库依赖
- 将链接命令中的库解析移到条件判断内部,避免不必要的参数传递
- 添加新的 AST 转储脚本用于调试目的
- 更新弃用警告处理,在 gen_stub.php 中屏蔽 E_DEPRECATED 错误
- 修复 Translator 中的链接命令构造,移除重复的库解析调用
- 改进 arginfo 头文件生成的输出验证逻辑,使用 str_contains 替代 str_starts_with
```
|
7 months ago |
韩天峰
|
a6a06ca859
|
feat(translator): 增强PHP到C++编译器功能
- 在ClassLikeDef中添加getNamespacedName方法的symbolic参数支持
- 简化compiler.php中的文件扫描逻辑并移除冗余代码
- 在CompilerBase中添加函数定义存储数组和相关属性
- 更新错误处理方法结构并分离基本错误和致命错误处理
- 在extension.cc模板中移除类信息函数声明并添加函数入口表
- 修改属性偏移获取逻辑以支持非符号化命名空间
- 添加嵌入式模块获取函数实现
- 重构gen_stub.php中的类和函数信息生成逻辑
- 移除全局变量genClass并更新命令行选项处理
- 重命名examples/class/test.php为examples/appx/test.php并添加测试常量和函数
- 在Translator中添加PHP源文件和arginfo头文件数组管理
- 更新目标名称验证以检查C++保留关键字
- 实现getFiles方法统一文件路径处理逻辑
- 添加函数包装器生成功能和类注册函数提取
- 优化类CE列表生成逻辑并修复头文件包含顺序问题
- 重构存根文件生成流程并改进错误报告机制
|
7 months ago |
韩天峰
|
e824c5d7c0
|
fix(compiler): 修复变量赋值和属性访问的类型检查问题
- 添加了对属性赋值操作的类型检测支持
- 实现了模运算符的类型安全处理
- 添加了布尔值转义函数 escapeBool
- 修改 parsePropertyFetch 方法以支持赋值操作标识
- 优化 foreach 循环中的变量检查逻辑
- 添加引用赋值的类型验证
- 将 writeFile 方法改为公有以便外部调用
- 添加 checkVar 方法进行变量类型安全检查
- 更新测试文件中的变量命名以避免冲突
- 修复对象链接测试中的属性访问问题
|
7 months ago |
韩天峰
|
3dc79d2074
|
fix(parser): 修复抽象类实例化和空语句处理问题
- 添加抽象类无法实例化的测试用例
- 修复doc注释解析器返回空数组的问题
- 添加对Stmt_Nop语句类型的处理支持
- 确保预处理器正确处理空语句类型
|
7 months ago |
韩天峰
|
43b9797df8
|
test(classes): 添加魔术方法相关测试用例
- 添加 __call 方法异常处理测试
- 添加 __set 和 __get 魔术方法功能测试
- 添加魔术方法签名检查测试
- 添加抽象类和抽象方法调用测试
- 添加对象转数组键名转换测试
- 添加赋值操作符属性测试
- 添加数据损坏相关测试
fix(compiler): 禁止在 echo 中使用赋值表达式
- 在 parseEcho 方法中检测赋值表达式并报错
- 修复属性赋值操作符解析逻辑
refactor(stub): 优化全局变量默认值处理
- 统一数组类型默认值处理方式
- 移除特殊空数组处理逻辑
feat(magic): 添加魔术方法参数数量检测机制
- 实现 MagicMethodDetector trait
- 集成到 Translator 类中使用
|
7 months ago |
韩天峰
|
c3f5aca1a8
|
feat(generator): 添加变量名参数支持PHP全局变量初始化
- 为initializeZval方法添加varName参数以支持全局变量赋值
- 在ZVAL初始化后添加php::global_vars映射设置
- 重置ZVAL类型标志确保正确的内存管理
- 更新函数调用以传递变量名称信息
|
7 months ago |
韩天峰
|
8b0c3d2b72
|
refactor(php): 重构PHP编译器基础功能并优化代码结构
- 移除不支持函数列表的硬编码定义
- 添加对不支持函数调用的运行时检查和错误报告
- 简化静态属性和类常量解析中的self关键字处理逻辑
- 修复类方法调用中self关键字的替换逻辑
- 将扩展模块入口声明从static改为全局作用域
- 重写gen_stub.php脚本的主函数结构和命令行参数处理
- 添加类信息和函数信息的独立生成选项
- 优化桩文件生成时的跳过提示输出
- 重构翻译器中的类解析方法实现
- 更新不支持函数列表包含更多动态函数
|
7 months ago |
韩天峰
|
9702529c0f
|
feat(compiler): 添加类常量获取支持并优化参数信息处理
- 在 CompilerBase.php 中添加对 Expr_ClassConstFetch 类型的支持
- 修改 getArgInfo 方法签名以接收 Node 参数并添加参数不存在时的错误处理
- 修复三元运算符解析逻辑以正确处理省略中间表达式的情况
- 将 null 常量映射从 nullptr 改为 php::null
- 扩展 hasVar 方法以支持更多变量类型包括静态属性和对象属性
- 添加 parseClassConstFetch 方法用于处理类常量获取表达式
- 在 gen_stub.php 中修复缺少可见性修饰符和参数类型的处理
- 跳过生成 ext_functions 条目当类名不存在时
- 在 Translator.php 中添加存根文件生成的状态检查和错误报告
|
7 months ago |
韩天峰
|
ca1ee88d5f
|
支持 class 处理,初步版本
|
8 months ago |
韩天峰
|
53a8e64b03
|
修改 gen_stub.php, 未设置类型默认为 mixed
|
8 months ago |
韩天峰
|
02ce29ba97
|
added gen_stub.php
|
8 months ago |