韩天峰
|
e230e66164
|
feat(php): 支持引用参数的默认值为数组
- 添加 isEmptyArray 方法检查空数组
- 修改编译器对引用参数默认值的处理逻辑
- 实现引用参数默认值为空数组的支持
- 更新参数解析逻辑以正确处理引用参数
- 添加测试用例验证引用参数数组默认值功能
- 修复命名参数缺失默认值时的错误处理
|
5 months ago |
韩天峰
|
1441a7e5be
|
cs-fix
|
5 months ago |
韩天峰
|
52319ccd03
|
refactor(php): 重构函数调用和错误抑制处理逻辑
- 将 isExitExpr 方法中的 Node\Stmt 类型检查更改为 Node\Stmt\Expression
- 移除 getFuncPtr 方法中的 macro 参数及相关逻辑
- 移除 parseFuncCall 方法中的 silent 参数及静默调用相关代码
- 统一函数调用都使用 php::call 方式
- 重写 parseErrorSuppress 方法,使用 error_reporting 函数控制错误报告级别
- 简化调试信息相关的代码生成逻辑
- 删除 cpp_aot_helper.h 中的 CALL 和 CALL_SILENT 内联函数定义
- 更新所有 getFuncPtr 调用移除第二个参数
|
6 months ago |
韩天峰
|
52b1effffb
|
feat(php): 添加对 exit 语句的支持
- 在 AstNodeType 中新增 isReturnExpr、isBreakExpr 和 isExitExpr 方法
- 修改 CompilerBase 中 switch case 的验证逻辑
- 支持 exit 语句作为 switch case 的结束语句
- 更新错误消息以包含 exit 语句的验证
- 重构条件判断使用新的辅助方法进行类型检查
|
6 months ago |
韩天峰
|
208a34b134
|
feat(php): 添加对原生类型和方法调用的支持
- 新增 isMethodCall 和 isStaticCall 方法用于检测方法调用类型
- 实现 genScopeSwitchCode 方法用于生成作用域切换代码
- 移除 lastNativeCall 属性并优化相关逻辑
- 添加 defaultNativeType 属性控制原生类型使用
- 移除 resetExpr 方法简化表达式解析
- 使用 empty 替代 isset 检查 nativeFunctions
- 重构函数体解析逻辑并添加 Skip 异常处理
- 支持 std::int、std::float、std::bool 原生类型转换
- 添加 checkNativeFunction 方法处理函数声明检查
- 使用 getNativeType 方法统一类型获取逻辑
- 重构参数解析逻辑支持可变参数展开
- 更新 C++ 辅助函数支持作用域管理
- 添加原生类型测试用例
|
6 months ago |
韩天峰
|
c259d20562
|
feat(php): 添加对函数调用占位符的支持并实现作用域切换功能
- 在 AstNodeType 中添加 isPlaceholderExpr 方法用于检测占位符表达式
- 在 CompilerBase 中添加对函数调用占位符的特殊处理逻辑
- 使用 isPlaceholderExpr 替换直接的类型检查以统一占位符判断
- 在 C++ 层面实现 php_switch_scope 和 php_restore_scope 功能
- 在 PlaceHolderGenerator 中添加作用域切换代码生成逻辑
- 添加新的测试用例验证静态方法占位符调用功能
|
6 months ago |
韩天峰
|
f85889fce1
|
feat(php): 添加函数调用表达式检测和相关功能支持
- 新增 isCallExpr 方法用于检测函数调用表达式
- 添加 ceWrappers 属性并在闭包生成器中管理其状态
- 添加 lastNativeCall 属性跟踪最后的本地调用
- 实现 resetExpr 方法重置表达式状态
- 更新常量解析中的 get_called_ce 调用
- 在箭头函数解析中添加对 void 返回类型的处理逻辑
- 优化调试信息中 php_file 的设置位置
|
6 months ago |
韩天峰
|
cebe50121a
|
refactor(php): 优化PHP编译器代码结构和功能实现
- 修复AstNodeType中isAssignOp方法的命名空间引用问题
- 移除class-static-002测试用例中的多余输出断言
- 在CompilerBase中添加objectWrappers和ceWrappers属性用于对象包装器管理
- 新增getCeWrapper方法用于获取类入口包装器
- 修改注释格式从文档块改为行注释以提升性能
- 移除hasNativeClass和hasNativeFunction的返回值类型注解
- 重构parseArrayMixed方法的位置,从私有方法调整为类末尾重新定义
- 简化魔术常量解析中的字符串拼接逻辑
- 优化静态调用处理,支持static关键字的正确解析
- 添加addTmpVar辅助方法用于临时变量创建
- 统一字符串字面量的引号使用规范
|
6 months ago |
韩天峰
|
34f157871d
|
test(compiler): 添加空合并赋值操作符测试用例并优化编译逻辑
- 添加 assign_coalesce_002.phpt 测试文件验证空合并赋值功能
- 在 AstNodeType 中新增 isConstFetch 和 isAssignOp 辅助方法
- 优化 CompilerBase 中的空合并赋值编译逻辑,使用三元运算符替代 if 语句
- 修复局部变量检测和类型推断相关问题
|
6 months ago |
韩天峰
|
43cb0948e1
|
refactor(php): 优化PHP编译器类型检查和表达式处理
- 添加ClassConstFetch类型的检测方法
- 增加对VariadicPlaceholder的错误处理
- 移除静态属性获取的特殊处理逻辑
- 优化表达式解析的通用处理流程
- 修复最后行返回语句检测的边界情况
- 使用常量替换硬编码类型字符串
- 统一魔法方法参数类型验证方式
|
6 months ago |
韩天峰
|
257616d571
|
refactor(compiler): 优化方法调用和参数解析逻辑
- 移除编译器中无用的原生函数检查逻辑
- 更新反射参数检查以支持类方法参数引用
- 添加类型化对象的方法调用处理机制
- 实现匿名类实例继承相关功能
- 修复数组元素递增递减操作处理
- 优化ZipArchive等扩展函数的引用参数处理
- 添加私有属性名称解混淆测试用例
- 扩展反射类以支持类方法参数获取
|
7 months ago |
韩天峰
|
a72752828f
|
feat(php): 添加对 match 表达式的支持
- 实现了 match 表达式的解析和编译功能
- 添加了多个测试用例验证 match 表达式的基本功能
- 包括基本匹配、默认情况、多条件匹配等功能测试
- 实现了 match 表达式的错误处理机制
- 添加了对重复条件和尾随逗号的支持测试
- 更新了 AST 节点类型检查以支持 Match_ 表达式
- 在常量列表中添加 bool 类型支持
|
7 months ago |
韩天峰
|
75a9309801
|
feat(php): 添加标量类型检查和yield表达式支持
- 新增AstNodeType::isScalar方法用于检查标量类型
- 在CompilerBase中添加对Expr_Yield和Expr_YieldFrom表达式的错误处理
- 修改变量表达式判断逻辑,排除标量类型的情况
- 添加digit_count示例程序用于数字位数计算性能测试
|
7 months ago |
韩天峰
|
2c90437a99
|
style(coding-standard): 移除严格类型声明并调整代码格式
- 将 .php-cs-fixer.dist.php 中的 declare_strict_types 设置为 false
- 从所有 PHP 类文件中移除 declare(strict_types=1) 声明
- 在 CompilerBase.php 中添加缺失的空行以改善代码可读性
- 恢复 Translator.php 中关于 noLiteralStrings 的原始配置逻辑
|
7 months ago |
韩天峰
|
13a5849584
|
代码格式化,命名空间处理
|
7 months ago |
韩天峰
|
8c20fd18c8
|
refactor(core): 优化代码结构和性能
- 调整 import 语句顺序,将 Node 相关引入规范化
- 规范化字符串拼接操作,统一使用点号连接
- 统一比较运算符写法,调整变量与常量的比较顺序
- 移除多余空行和分号,精简代码结构
- 标准化缩进和代码格式,提升可读性
- 优化循环和条件判断逻辑,使用前置递增递减
- 修复类定义和方法定义的格式一致性
- 更新依赖管理方式,优化编译器配置加载
|
7 months ago |
韩天峰
|
1c074d140e
|
feat(php): 实现PHP右结合赋值操作符支持
- 添加isArrayDimFetch方法用于检查数组维度获取表达式
- 实现parseRightAssociativeAssign方法处理右结合赋值链
- 重构parseAssign方法以支持嵌套赋值表达式解析
- 更新parseArrayDimStore方法处理空维度读取错误
- 添加右结合赋值功能的测试用例和示例文件
|
7 months ago |
韩天峰
|
f8be1767e6
|
feat(php): 添加对象类型推断和方法调用优化功能
- 新增 isNewExpr、isNameExpr、isScalarString、isFuncCallExpr 等 AST 节点类型判断方法
- 移除 PROPERTY_OFFSETS 常量并优化变量声明结构
- 添加 objects 属性用于存储变量对应的对象类型信息
- 实现对象创建和函数调用时的类型推断逻辑
- 扩展 convertObjectExpr 方法支持指定类名参数
- 重构原生方法调用检查逻辑,实现更精确的方法查找机制
- 添加访问权限检查功能确保私有方法不被外部调用
- 优化 FuncCallOptimizer 支持 strval 和 objval 函数转换
- 添加示例文件展示对象操作功能
|
7 months ago |
韩天峰
|
0f3ccb98cd
|
feat(php): 添加属性偏移量支持和性能优化
- 引入 Node 类型导入并添加 isIdExpr 方法用于标识符检查
- 新增 PROPERTY_OFFSETS 常量和 getPropertyOffset 方法用于属性偏移量计算
- 重构命名空间相关方法,统一使用 getNativeName 替代 getNativeFunctionName
- 优化属性获取逻辑,在特定条件下使用属性偏移量提升性能
- 在模板中生成属性偏移量声明和初始化代码
- 添加性能测试脚本 prof.php 和性能分析配置调整
|
7 months ago |
韩天峰
|
25e567b3db
|
feat(php): 添加类定义功能支持
- 实现了 StaticPropertyFetch 类型检查方法
- 扩展了 ClassDef 构造函数以支持 flags 参数
- 添加了类继承时对 final 类的检查逻辑
- 更新了示例文件 call3.php 中的类结构
- 增加了多个类相关的测试用例文件
- 修改了后置操作解析逻辑以支持静态属性访问
- 在编译器基类中添加了类声明的错误处理
- 实现了对象包装器数组初始化
- 添加了对类可见性构造函数的支持测试
- 更新了接口定义的构造函数实现
|
7 months ago |
韩天峰
|
c9d6e93f40
|
支持 Iterator/IteratorAggregate 对象 foreach 操作
|
8 months ago |
韩天峰
|
9ca07388bc
|
refactor(php): 重构PHP编译器中的变量表达式判断逻辑
- 引入AstNodeType trait来统一处理变量表达式判断
- 将原来基于getType()方法的判断改为使用isVarExpr()方法
- 在CompilerBase类中使用新的trait来检测变量表达式
- 更新类型映射表以支持更多PHP类型转换
- 优化变量赋值、函数调用、静态调用等场景下的变量检测逻辑
- 统一代码中多处重复的变量表达式判断逻辑为单一实现
|
8 months ago |