韩天峰
27060d9b87
refactor(php): 重构变量声明和全局变量处理逻辑
...
- 将 localVarDecl 重命名为 scopeVarDecl 并更新所有相关调用
- 移除旧的 getStaticVarName 方法,使用新的 escapeStaticVar 方法
- 添加 parseSuperGlobalVar 方法来处理超全局变量
- 添加 hasArgument 和 addScopeGlobalVar 等辅助方法
- 更新 hasVar 方法以支持作用域全局变量检查
- 实现对 $GLOBALS 数组访问的支持,将其转换为相应变量
- 重构全局变量初始化和清理逻辑,使用新的命名规则
- 添加函数上下文中的全局变量数组存储
- 更新模板文件中的全局变量引用方式
5 months ago
韩天峰
afbdf0fcdb
refactor(php): 优化对象创建逻辑
...
- 将 object_properties_init 调用移到 php_std_create_object 函数中
- 重写 php_get_create_object_fn 函数返回 php_std_create_object
- 格式化 php_get_method 函数参数以提高可读性
- 从 Translator.php 中移除重复的对象属性初始化代码
- 简化了对象创建流程并提高了代码复用性
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
韩天峰
fbb68ad689
feat(constants): add constant definition validation and test coverage
...
- Add isValidDefineName method to validate constant names according to PHP rules
- Implement validation check in define function call processing
- Add fatal error handling for invalid constant names
- Create comprehensive test case covering constant definition and usage scenarios
5 months ago
韩天峰
0cee9a4154
feat(php): 支持常量别名解析和命名空间处理
...
- 实现 useAliases 映射来处理常量别名
- 添加命名空间类名解析逻辑到 getNamespacedClassName 方法
- 修复 parseUse 方法的参数类型声明为 Node\Stmt\Use_
- 更新变量命名提高代码可读性
- 添加 use-const.phpt 测试用例验证常量别名功能
5 months ago
韩天峰
4a5fe8dd6c
fix(php): 修复抽象构造函数中提升属性的声明检查
...
- 添加了对抽象构造函数中提升属性的验证逻辑
- 在方法重写检查后增加了专门的构造函数处理
- 防止在抽象构造函数中声明提升属性导致的错误
- 实现了参数提升属性的检测和错误报告机制
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
韩天峰
a284a9bfaf
docs(syntax): 更新不支持语法文档并添加新测试用例
...
- 新增重复函数名和类名不支持特性的详细说明
- 新增break/continue多层循环不支持特性的详细说明
- 新增字符串越界访问行为差异特性的详细说明
- 添加相关替代方案和最佳实践建议
- 更新统计数据和FAQ问答内容
- 修复代码块标记格式问题
- 添加字符串相关的bug测试用例
5 months ago
韩天峰
5260559345
feat(closure): 添加 C++ lambda 捕获局部变量支持
...
- 在 ClosureGenerator 中实现 & 捕获当前函数所有局部变量作为 arguments 处理
- 将原始上下文的局部变量赋值给 context 的 arguments 属性
- 添加静态变量测试用例验证 C++ lambda 捕获功能
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
韩天峰
f6cb3278cb
refactor(Php): 优化 get_class 函数调用处理逻辑
...
- 将 get_class 函数的处理逻辑提取到独立的 genGetClass 方法中
- 保留原有的类型检查和字面量字符串生成功能
- 简化主方法中的条件判断结构
- 提高代码可读性和维护性
5 months ago
韩天峰
26a0439f42
feat(php): 优化函数调用并添加类存在性检查支持
...
- 实现 class_exists 函数的静态分析优化,直接返回已知类的存在性
- 添加 get_class 函数支持,为类型化对象生成字符指针
- 优化 function_exists 函数检查逻辑,提前处理原生函数
- 添加 get_class 测试用例验证功能
- 更新基准测试代码,添加 class_exists 性能测试
- 移除未使用的宏定义,优化常量定义方式
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
韩天峰
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