韩天峰
631a1ef6b2
refactor(docs): update file paths and directory structure references
...
- Change src/Php/Translator.php to src/Translator.php in documentation
- Update class hierarchy diagram to remove Php subdirectory references
- Modify composer.json autoloader to map TypePhp namespace to src directory only
- Adjust all src/Php/* paths to src/* in configuration and test files
- Update project.yml sources to include ./src instead of individual Php subdirectories
- Remove Php subdirectory from file paths in platform and analysis tests
- Clean up directory references in test results documentation
2 months ago
韩天峰
8ac4c5872d
refactor(core): rename PhpAot namespace to TypePhp across codebase
...
- Updated namespace declarations from PhpAot\Php to TypePhp in all source files
- Modified import statements to use TypePhp instead of PhpAot\Php throughout the codebase
- Adjusted composer.json autoload configuration to map TypePhp namespace to src directories
- Updated documentation references from PhpAot\Php to TypePhp in comments and markdown files
- Changed class references in test files to use new TypePhp namespace
- Updated bootstrap and utility scripts to reference TypePhp namespace
- Removed abstract base class inheritance in CompilerBase class
- Added new properties and methods for indentation and mode handling in CompilerBase
- Updated exception handling to use new TypePhp\Exception namespace
2 months ago
韩天峰
777d6b6c36
rename(project): refactor Swoole-Compiler to TypePHP
...
- Rename project references from Swoole-Compiler to TypePHP in documentation
- Update command line usage from php bin/compiler.php to ./tpc
- Change application name constant from Swoole-Compiler (AOT) to TypePHP
- Update file descriptions and metadata in project.yml
- Modify Windows packaging script title to TypePHP
- Replace all copyright headers to reference TypePHP instead of Swoole-Compiler
2 months ago
韩天峰
989395d7e1
fix(php): 修复常量比较的大小写敏感问题
...
- 修改 isScalarBool 方法使用 strtolower 进行不区分大小写的布尔值比较
- 修改 getBoolValue 方法使用 strcasecmp 替代严格相等比较
- 修改 isNull 方法使用 strcasecmp 进行不区分大小写的 null 比较
- 在 getConstantValue 中使用 strcasecmp 替代严格相等比较
- 在 getTypeFromConstant 中使用 strcasecmp 替行不区分大小写的布尔值检查
- 添加对函数内部声明函数的错误检查
- 添加测试用例验证布尔数组排序功能
2 months ago
韩天峰
7ad7657e28
cs-fix
4 months ago
韩天峰
4470c4597d
fix(std): 修复标准数组布尔值比较问题
...
- 添加了测试用例验证浮点数和布尔数组的功能
- 实现了标量布尔值检测方法 isScalarBool
- 添加了布尔值获取方法 getBoolValue
- 定义了 VALUE_FALSE 和 VALUE_TRUE 常量
- 实现了 parseCompareExpr 方法处理布尔值比较
- 修改相等和不等操作符解析使用新的比较表达式解析
- 重构了相同操作符解析逻辑并移除了重复代码
4 months ago
韩天峰
2b088d71c5
feat(php): 添加 std::array 类型支持并优化编译器功能
...
- 新增 StdArrayParser trait 处理 std::array 类型解析
- 添加 std::array 类型检测和类型转换功能
- 实现 std::array 的维度检查和安全索引访问
- 添加 polyfills.php 文件提供类型定义和数组填充功能
- 更新 C++ 标准从 c++14 到 c++17
- 修复表达式解析中的类型检测逻辑
- 优化编译器的并发编译功能
- 添加数组循环性能测试示例
- 实现 std::array 的多维数组支持
4 months ago
韩天峰
799aa629c0
feat(php): 添加 refval 函数支持引用传递功能
...
- 新增 isRefvalCall 方法检测 refval 函数调用
- 在编译器中添加对 refval 函数的特殊处理逻辑
- 实现 refval 函数调用的参数解析和优化
- 添加 refval 函数的 polyfill 实现
- 在 stub 生成中使用 refval 包装声明字符串
- 添加 refval 函数的测试用例
4 months ago
韩天峰
ec98d1045d
fix(php): 修复异常处理和编译器逻辑问题
...
- 添加了 try-catch 异常处理的测试用例
- 实现了 isFullNameExpr 方法用于检查完全限定名称表达式
- 修复了编译器中的 break 语句缺失问题
- 重命名了 parseGlobal 方法参数以避免变量冲突
- 优化了 catch 类型检查逻辑,支持类名实例化检查
- 添加了 C++ 关键字到保留字常量列表
- 完善了项目配置文件 project.yml
- 添加了 instanceOf 符号方法
- 修复了多个 switch 语句中的 break 缺失问题
4 months ago
韩天峰
36cf7dbf16
feat(aot): 添加对引用赋值和列表赋值的支持
...
- 实现了引用赋值功能,支持变量间的引用传递
- 添加了列表赋值解析逻辑,支持数组解构赋值操作
- 新增 isAssignExpr 方法用于判断赋值表达式类型
- 重构了赋值相关的编译逻辑,提高代码可读性
- 添加了多个测试用例验证引用和列表赋值功能
- 修复了动态调用中的参数展开问题
5 months ago
韩天峰
2ad8df01da
refactor(php): 优化代码结构并添加测试用例
...
- 修复了AstNodeType.php中的命名空间引用问题
- 将parseTrait方法从Translator.php末尾移至中间位置
- 添加了ref 002测试用例验证数组引用行为
- 统一了代码风格和导入语句格式
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
韩天峰
f179705296
cs-fix
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
韩天峰
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 调用移除第二个参数
5 months ago
韩天峰
52b1effffb
feat(php): 添加对 exit 语句的支持
...
- 在 AstNodeType 中新增 isReturnExpr、isBreakExpr 和 isExitExpr 方法
- 修改 CompilerBase 中 switch case 的验证逻辑
- 支持 exit 语句作为 switch case 的结束语句
- 更新错误消息以包含 exit 语句的验证
- 重构条件判断使用新的辅助方法进行类型检查
5 months ago
韩天峰
208a34b134
feat(php): 添加对原生类型和方法调用的支持
...
- 新增 isMethodCall 和 isStaticCall 方法用于检测方法调用类型
- 实现 genScopeSwitchCode 方法用于生成作用域切换代码
- 移除 lastNativeCall 属性并优化相关逻辑
- 添加 defaultNativeType 属性控制原生类型使用
- 移除 resetExpr 方法简化表达式解析
- 使用 empty 替代 isset 检查 nativeFunctions
- 重构函数体解析逻辑并添加 Skip 异常处理
- 支持 std::int、std::float、std::bool 原生类型转换
- 添加 checkNativeFunction 方法处理函数声明检查
- 使用 getNativeType 方法统一类型获取逻辑
- 重构参数解析逻辑支持可变参数展开
- 更新 C++ 辅助函数支持作用域管理
- 添加原生类型测试用例
5 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 操作
7 months ago
韩天峰
9ca07388bc
refactor(php): 重构PHP编译器中的变量表达式判断逻辑
...
- 引入AstNodeType trait来统一处理变量表达式判断
- 将原来基于getType()方法的判断改为使用isVarExpr()方法
- 在CompilerBase类中使用新的trait来检测变量表达式
- 更新类型映射表以支持更多PHP类型转换
- 优化变量赋值、函数调用、静态调用等场景下的变量检测逻辑
- 统一代码中多处重复的变量表达式判断逻辑为单一实现
7 months ago