韩天峰
|
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 |
韩天峰
|
a8483af474
|
test(lang): 添加 foreach 循环和 func_get_arg 函数测试用例
- 添加 foreachLoop-04.phpt 测试数组元素作为值的循环功能
- 添加 func_get_arg-001.phpt 测试 PHP7 中 func_get_arg 函数行为
- 添加 func_get_arg_variation.phpt 测试 func_get_arg 参数变化情况
- 验证 foreach 循环中数组元素赋值的预期输出结果
- 验证 func_get_arg 函数在不同参数位置下的异常处理
|
5 months ago |
韩天峰
|
2267de194b
|
fix(php): 修复静态属性访问和操作符映射问题
- 修正 OP_NOT_EMPTY 操作符映射从 '!php::empty' 到 'php::notEmpty'
- 修改 findNativeStaticProperty 方法返回类型从 PropertyDef 到 string
- 添加对 parent:: 静态属性访问的支持和错误处理
- 更新 findNativeProperty 方法参数添加 static 标识符
- 修复静态和动态属性访问的判断逻辑
- 统一错误消息中的对象引用为表达式节点
- 简化静态属性获取的实现逻辑
- 添加静态属性访问的基本功能测试用例
|
5 months ago |
韩天峰
|
9af8349762
|
mv.php 移至根目录,非 compiler 工具
|
5 months ago |
韩天峰
|
517c0d8a83
|
refactor(Php): 优化链式表达式解析逻辑
- 将函数获取操作提前到方法开始处,避免重复调用
- 统一使用预获取的函数名变量进行字符串拼接
- 移除重复的 getChainedFunc 方法调用
- 简化 isset 操作符的条件判断逻辑
- 优化代码结构以提高执行效率
|
5 months ago |
韩天峰
|
b7236ce38b
|
refactor(php): 重构链式表达式解析逻辑
- 将操作符匹配逻辑提取到独立的 getChainedFunc 方法中
- 简化 parseChainedExpr 方法中的条件判断结构
- 统一链式函数调用的处理方式
- 移除重复的操作符匹配代码
- 提高代码可读性和维护性
|
5 months ago |
韩天峰
|
8eb944312a
|
refactor(compiler): 重构编译器基础类以改善表达式解析
- 统一使用 Expr 命名空间替代 Node\Expr 提高代码一致性
- 添加 OP_NOT_EMPTY 常量用于非空检查操作
- 实现值选择操作的统一处理方法 parseValueSelection
- 优化三元运算符解析逻辑,支持 ?: 操作符的正确处理
- 更新测试用例验证 ?: 操作符功能
- 添加示例文件演示赋值比较功能
- 修复多个表达式解析方法的类型声明一致性问题
- 重构链式操作解析逻辑,改进 isset 和 empty 处理
- 优化数组维度获取、函数调用等表达式的解析实现
|
5 months ago |
韩天峰
|
59698b5319
|
fix(php): 解决类方法参数中使用$this的问题并优化静态属性访问
- 添加对类方法中使用$this作为参数名的错误检查
- 修复静态属性被当作动态属性访问时返回null的逻辑
- 在关键词列表中添加this_作为phpx保留关键字
|
5 months ago |
韩天峰
|
fa6105ebdf
|
refactor(php): 重构编译器基础类和翻译器代码结构
- 在 CompilerBase.php 中引入 MagicMethodDetector trait
- 优化类属性声明的代码布局,添加适当的空行分隔
- 使用 checkArgType 方法替换手动类型检查逻辑
- 修复变量重新赋值时的类型检查条件表达式格式
- 更新字符串连接语法使用单引号保持一致性
- 为 Exception 类文件添加标准 PHP 文件头注释
- 从 Translator.php 中移除不再需要的 MagicMethodDetector trait 引用
|
5 months ago |
韩天峰
|
8670df2a3e
|
fix(php): 解决函数返回引用类型的编译错误
- 添加对函数返回引用类型的检查,禁止返回引用类型
- 修复赋值引用表达式的解析逻辑,确保左侧为变量
- 添加临时变量处理非变量表达式的引用赋值
- 新增函数返回引用的测试用例验证错误处理
|
5 months ago |
韩天峰
|
ecb7795243
|
fix(aot): 修复空合并运算符的编译逻辑
- 在 parseExpr 中添加对 replace 属性的检查
- 修改 coalesce 运算符的处理逻辑,避免重复函数调用
- 添加临时变量来存储 coalesce 表达式的结果
- 更新测试用例以验证正确的执行顺序和结果
- 添加新的测试用例验证 null 合并运算符行为
- 添加测试用例验证 ??= 运算符的链式赋值功能
|
5 months ago |
韩天峰
|
fdf7eb9765
|
feat(compiler): 实现空合并运算符的编译支持
- 添加了对 ?? 运算符的完整编译支持
- 实现了变量存在性检查逻辑
- 添加了链式表达式解析功能
- 集成了测试用例验证功能
- 优化了错误处理机制
- 完善了代码生成流程
|
5 months ago |
韩天峰
|
cfcbfcdb2f
|
fix(php): 修复变量重新赋值检查和unset操作的错误处理
- 修复数组类型变量重新赋值检查逻辑,排除VAR类型
- 优化错误消息格式,移除多余的空格
- 为unset操作添加未定义变量检查
- 为unset操作添加不支持类型的操作数错误处理
- 添加未定义变量测试用例
- 添加不支持的unset类型测试用例
|
5 months ago |
韩天峰
|
9f52d48770
|
feat(php): 添加类型对象重新赋值检查功能
- 在对象赋值时检测类型冲突并抛出错误
- 实现 typed object 的类型安全检查机制
- 添加 Cannot re-assign typed object 错误提示
- 扩展 AssignTest 测试用例验证类型重分配行为
- 优化变量类型检查逻辑确保类型一致性
|
5 months ago |
韩天峰
|
a1c922dac2
|
feat(compiler): 添加变量重新赋值类型检查功能
- 实现了对变量重新赋值时的类型验证逻辑
- 当变量从一种类型重新赋值为另一种类型时抛出致命错误
- 添加了测试基类用于编译器测试
- 新增变量重新赋值的单元测试用例
- 在代码差异中检测到变量类型变化时触发错误处理
|
5 months ago |
韩天峰
|
1a7bfe1de5
|
fix(preprocessor): 解决重复函数和类声明检查问题
- 在函数声明前添加 prepare 步骤以确保预处理器初始化
- 添加重复函数名称检测逻辑,防止相同函数名重复声明
- 添加重复类名检测逻辑,避免类重复定义错误
- 使用小写函数名作为符号表键值进行冲突检查
- 在检测到重复声明时抛出致命错误
|
5 months ago |
韩天峰
|
057e25712d
|
fix(php): 修复类方法和常量查找的无限循环问题
- 将类方法查找中的条件循环改为无限循环以正确处理继承链
- 将类常量查找中的条件循环改为无限循环以正确处理继承链
- 确保在继承链结束时能够正确返回 false 而不是陷入无限循环
|
5 months ago |
韩天峰
|
e508b6de4f
|
refactor(php): 重构编译器内部函数和类管理机制
- 移除 CompilerTest 单例模式,改为 create 方法创建实例
- 将 nativeFunctions 重命名为 functions 并统一使用 addFunction/hasFunction/getFunction 方法管理
- 将 nativeConstants 重命名为 constants 并统一使用相应方法管理
- 将 nativeClasses 相关方法重构为 getClass/hasClass 等统一命名方式
- 添加 ConstantDef 实体类用于常量定义管理
- 优化函数查找逻辑,使用 escapeFunction 进行名称转换
- 重构预处理器中的函数注册逻辑
- 更新模板文件中的变量引用以匹配新的属性命名
- 添加重复函数、类的测试用例并移除旧的错误测试文件
|
5 months ago |
韩天峰
|
76c1104234
|
feat(compiler): 添加测试模式和静态变量重复检测功能
- 引入 CompilerTest 类用于测试模式运行
- 在 CompilerBase 中添加 forTest 标志和 TestError 异常
- 实现静态变量重复定义的检测和报错功能
- 添加 phpunit 配置文件和引导文件
- 创建重复静态变量的测试用例
- 添加基本静态变量功能的测试文件
- 修改 Translator 的 addFiles 方法支持文件列表添加
- convert 方法中添加文件路径解析功能
|
5 months ago |
韩天峰
|
3a3c8eb6b6
|
test(core): 添加对象比较基本功能测试
- 添加标准对象比较处理器测试用例
- 创建多个类实例验证相等性判断逻辑
- 测试相同类不同实例间的比较行为
- 验证不同类对象间的比较结果
- 添加继承关系对象的比较测试
- 验证对象处理器不同的比较场景
|
5 months ago |
韩天峰
|
53958c67c3
|
test(tree): 添加树形结构转换功能的AOT测试用例
- 创建TreeHelper类实现数组到树形结构的转换功能
- 实现基于ID和父ID的层级关系构建算法
- 添加测试数据验证多层级嵌套结构的正确性
- 包含根节点、子节点及深层级节点的断言测试
- 验证树形结构转换的完整性和准确性
- 为AOT编译环境跳过不支持的功能测试
|
5 months ago |
韩天峰
|
2ad8df01da
|
refactor(php): 优化代码结构并添加测试用例
- 修复了AstNodeType.php中的命名空间引用问题
- 将parseTrait方法从Translator.php末尾移至中间位置
- 添加了ref 002测试用例验证数组引用行为
- 统一了代码风格和导入语句格式
|
5 months ago |
韩天峰
|
2050945532
|
feat(php): 添加警告功能并优化函数调用处理
- 在 CompilerBase 中添加 warning 方法用于显示警告信息
- 添加 warningUndefinedBehavior 方法处理潜在的行为不一致警告
- 在 FuncCallOptimizer 中对 func_get_args、func_get_arg 和 func_num_args 调用添加警告提示
- 确保动态执行行为的一致性检查
|
5 months ago |
韩天峰
|
a74e4a1226
|
fix(php): 解决非变量引用赋值错误处理
- 添加了对非变量引用赋值的错误检查
- 当无法为非变量赋值引用时抛出致命错误
- 移除了原来的abort调用改为适当的错误处理机制
|
5 months ago |
韩天峰
|
a204ebf1e7
|
feat(aot): 改进switch语句编译逻辑支持默认分支
- 添加了default分支的特殊处理逻辑
- 实现了defaultOnly标识用于优化条件判断
- 修正了switch case条件列表的构建方式
- 添加了对多个测试用例的支持验证
- 优化了分支条件的代码生成策略
- 确保了break语句后的正确流程控制
|
5 months ago |
韩天峰
|
21b7de3905
|
feat(php): 添加对trait的支持和优化函数调用处理
- 在AstNodeType中添加isNull方法用于检查null值
- 更新CompilerBase中的参数默认值处理逻辑,支持引用参数的null默认值
- 将FuncCallOptimizer中的函数移动到合适位置并修复逻辑
- 重命名Preprocessor中的命名空间准备方法
- 在Translator中添加对trait语句的支持并抛出异常
- 添加对func_get_args和func_get_arg函数的优化实现
|
5 months ago |
韩天峰
|
ddeceec91f
|
feat(compiler): 添加符号声明和调用跟踪功能并优化方法调用检查
- 添加 symbolDeclInFile 和 symbolCallInFile 属性用于存储函数和类方法的声明及调用信息
- 修改 getNativeMethod 方法增加 checkArgs 参数控制参数检查逻辑
- 优化 Match 表达式解析逻辑,支持非变量条件表达式的处理
- 移除未处理匹配情况时不必要的返回空值语句
- 在预处理器中添加对静态调用、静态属性访问、类常量获取和新对象创建的依赖类跟踪
- 修复抽象类实例化错误消息中的字符串插值语法
- 为动态调用场景禁用参数检查以避免误报错误
|
5 months ago |
韩天峰
|
eb2eacc69a
|
feat(compiler): 添加对PHP内置函数func_get_arg和func_get_args的支持
- 在CompilerBase中添加isScalarInt方法用于判断表达式是否为标量整数
- 为parseScalar方法添加返回类型声明string
- 从常量列表中移除func_get_arg和func_get_args的不支持标记
- 在FuncCallOptimizer中实现func_get_arg、func_get_args和func_num_args的代码生成
- 添加详细的测试用例验证func_get_arg和func_get_args的功能
- 实现可变参数函数中对这些内置函数的正确处理
|
5 months ago |
韩天峰
|
898cbe2553
|
feat(php): 支持 func_num_args 函数优化
- 从 UNSUPPORTED_FUNCTIONS 列表中移除 func_num_args
- 添加 func_num_args 函数的运行时测试用例
- 实现 func_num_args 函数调用优化逻辑
- 支持通过 argInfoList 计算函数参数数量
- 添加对可变参数函数的支持
|
5 months ago |
韩天峰
|
d919ee280c
|
fix(php): 修复抽象类方法调用和实例化错误检查
- 添加了抽象类不能被实例化的检查,在编译时抛出错误
- 修复了方法准备逻辑,确保抽象方法在非抽象类中的正确验证
- 更新了测试期望输出以匹配新的错误格式
- 优化了错误堆栈跟踪的显示格式
|
5 months ago |
韩天峰
|
f3fd30c662
|
feat(php): 添加对联合类型的支持
- 在编译器基类中处理UnionType情况,将其转换为mixed类型
- 添加nullable类型属性的测试用例
- 实现对union类型参数的正确解析和处理逻辑
|
5 months ago |
韩天峰
|
537222b1e7
|
refactor(php): 重构PHP编译器基础类和预处理器
- 在resetNamespace方法中添加useAliases重置
- 将名称空间比较改为大小写不敏感匹配
- 在preprocessor中添加文件、函数、类和名称空间重置调用
- 将getNamespacedClassName替换为getFullClassName方法
- 添加目录检查防止路径错误
|
5 months ago |
韩天峰
|
37b44368eb
|
feat(compiler): 添加对ThinkPHP和Laravel项目的编译支持
- 在.gitignore中添加thinkphp、laravel和tmp项目目录的忽略规则
- 修改错误处理逻辑,使用统一的output方法替代直接echo输出
- 新增getFullClassName方法用于获取完整类名
- 添加Unsupported异常类型并改进语法检查
- 实现自继承类的检测和错误报告功能
- 优化类名解析逻辑,提高编译器兼容性
|
5 months ago |
韩天峰
|
a5f397efa5
|
feat(php): 完善函数返回值类型推断和解析完成状态跟踪
- 添加函数解析完成状态标识符 completed 属性
- 在函数解析完成后设置 completed 标识为 true
- 改进返回值类型变更时的日志输出,显示原类型到新类型的转换
- 优化方法调用返回值检测逻辑,仅在函数已完成解析时使用其返回值类型
- 修复内部函数返回值类型检测,排除 void 类型的干扰
- 更新对象表达式转换逻辑,确保表达式预处理正确执行
- 改进变量赋值错误提示信息,明确显示变量名称
- 添加返回值类型测试用例,验证 void 函数的赋值行为
- 修复命名空间类名获取逻辑,确保类名格式正确
|
5 months ago |
韩天峰
|
c0e224e4db
|
refactor(php): 更新幂运算函数调用实现
- 将 php::call(php::pow) 替换为 php::math::pow 直接调用
- 修改赋值操作符中的幂运算表达式生成逻辑
- 优化临时变量创建方式,使用 addTmpVar 方法替代手动创建
- 在函数调用优化器中添加对 pow 函数的直接映射
- 添加 pow 函数相关的测试用例验证功能正确性
|
5 months ago |
韩天峰
|
f179705296
|
cs-fix
|
5 months ago |
韩天峰
|
d49d8578c5
|
feat(php): 添加PHP编译器方法调用支持
- 实现了Expr_MethodCall节点的类型检测逻辑
- 添加了方法调用返回类型的反射检测功能
- 更新了方法调用的解析实现,使用call替换exec方法
- 移除了不再需要的objectWrappers相关代码
- 优化了对象转换和类型检查的处理流程
- 在Reflection类中添加了getMethodReturnType方法
- 改进了方法调用参数解析和执行的逻辑处理
|
5 months ago |
韩天峰
|
7dd30e2908
|
refactor(php): 优化PHP编译器代码结构和类型检查逻辑
- 修改clone表达式解析为使用php::clone函数调用
- 更新属性获取表达式的对象转换方式
- 使用checkArgType方法替代直接的类型比较进行魔术方法验证
- 重构预处理器中的方法准备逻辑以跳过抽象方法
- 添加Modifiers导入并改进依赖排序逻辑
- 为genNativeMethod方法参数添加类型声明
|
5 months ago |
韩天峰
|
67275c45f7
|
refactor(php): 修改访问权限检查方法的参数类型
- 将 checkAccessible 方法的第二个参数从 MethodDef|ConstantDef 对象改为 int 类型的 flags
- 更新 ConstantDef 类中 flags 属性和构造函数参数类型为 int
- 提取访问修饰符解析逻辑到独立的 parseModifiers 方法
- 在类常量、属性和方法解析中统一使用 parseModifiers 方法处理 flags
|
5 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 |
韩天峰
|
2838053e4f
|
feat(php): 添加命名空间常量并改进魔术方法检测器
- 在关键字列表中添加 'namespace' 常量
- 将魔术方法名称转换为小写进行比较以提高匹配准确性
- 更新 __toString 方法返回类型检查逻辑
- 更新 __serialize 方法返回类型检查逻辑
- 改进魔术方法参数和返回类型的验证机制
- 增强魔术方法检测的大小写不敏感性
|
5 months ago |
韩天峰
|
e230e66164
|
feat(php): 支持引用参数的默认值为数组
- 添加 isEmptyArray 方法检查空数组
- 修改编译器对引用参数默认值的处理逻辑
- 实现引用参数默认值为空数组的支持
- 更新参数解析逻辑以正确处理引用参数
- 添加测试用例验证引用参数数组默认值功能
- 修复命名参数缺失默认值时的错误处理
|
5 months ago |
韩天峰
|
7681f6dc26
|
fix(php): 修复预处理器中的依赖关系处理逻辑
- 在符号依赖检查中添加文件过滤条件,避免将当前文件添加到依赖列表中
- 移除对函数节点类型的冗余检查,简化符号声明文件映射逻辑
- 确保所有符号声明都能正确记录到对应文件中,提高依赖解析准确性
|
5 months ago |
韩天峰
|
f6a3e5b4b3
|
refactor(php): 重构PHP编译器依赖管理和类属性初始化功能
- 移除ClosureGenerator中无用的方法注释
- 在CompilerBase中重命名参数并添加isInternalClass方法
- 从ConstantDef中移除无用的导入
- 完全删除FileSorter类,改用外部库MJS\TopSort进行文件排序
- 在Preprocessor中重构依赖收集逻辑,优化文件排序算法
- 过滤内置函数和类,避免参与依赖管理
- 重构Translator中的类属性初始化代码,优化对象创建流程
- 统一字符串拼接操作符为单引号格式
|
5 months ago |
韩天峰
|
bb52f8ab10
|
refactor(php): 优化PHP编译器基础组件结构
- 在CompilerBase中添加类继承关系存储数组并增加注释说明
- 重命名FileSorter中的变量名提高代码可读性
- 简化Preprocessor中局部变量声明方式
- 限定prepareFunction方法参数类型增强类型安全
- 添加关于父类方法覆盖的注释说明
|
5 months ago |
韩天峰
|
3743a32eb8
|
refactor(php): 统一使用小写键值优化编译器方法重写检查
- 在 CompilerBase 中添加 isOverrideMethod 辅助方法简化重写判断逻辑
- 将 Preprocessor 中的所有符号名称转换为小写以确保一致性
- 修改类继承关系存储使用小写键值避免大小写敏感问题
- 优化方法重写检测循环使用小写键值提升查找性能
- 统一函数和方法名称的大小写处理逻辑
|
5 months ago |
韩天峰
|
183b2ba96c
|
fix(php): 修复未定义类型的默认值处理逻辑
- 未定义类型时,属性和参数默认使用 var (mixed, any) 类型
- 未定义类型时,返回值默认使用 void 类型
- 根据声明类型上下文返回相应的默认类型值
|
5 months ago |
韩天峰
|
9022821bcf
|
refactor(Php): 优化PHP编译器中的数组展开和对象转换逻辑
- 数组展开语法直接传递数组变量,避免创建不必要的临时变量
- 对象转换逻辑中添加对已存在包装器的检查和处理
- 添加php_get_object_wrap辅助函数用于对象包装处理
- 优化代码结构,减少临时变量的使用
|
5 months ago |
韩天峰
|
5650b71dd3
|
fix(php): 修复闭包变量捕获逻辑
- 添加对已使用变量的检查以避免重复捕获
- 将uses数组改为关联数组以支持变量名索引
- 在处理完所有变量后重新索引uses数组
- 确保不会对相同变量名创建多个ClosureUse节点
|
5 months ago |