韩天峰
|
ff6ca6c03a
|
重构:将代码迁移至独立的 PHP 源文件,减少核心类的代码行数
|
3 months ago |
韩天峰
|
c238892409
|
fix(parser): 修复StdContainer注释生成问题
- 修正了StdContainer注释中的数组声明引用错误
- 统一了容器类型的声明处理逻辑
- 确保了注释生成的一致性格式
|
3 months ago |
韩天峰
|
fc165fea27
|
refactor(Php): 提取 std 容器解析的公共逻辑
- 将 std::map 和 std::unordered_map 的重复解析逻辑提取到 parseStdMapBase 方法
- 使用参数化的方式处理不同类型的容器解析需求
- 消除了两个方法中的代码重复
- 提高了代码的可维护性和一致性
- 保持了原有的功能行为不变
|
3 months ago |
韩天峰
|
26a538680f
|
refactor(php): 将 stream_cast 函数替换为 toStream 方法
- 移除 stream_cast 全局函数实现
- 将 stream_cast($stream) 调用转换为 $stream->toStream() 方法调用
- 更新编译器中的流类型识别逻辑,移除对 stream_cast 的特殊处理
- 修改标准容器解析器中的 unsafePtr 为 boxExpr 属性
- 更新相关测试文件中的调用方式和断言
- 替换不安全指针转换为标准容器转换方法
|
3 months ago |
韩天峰
|
3f9c76df5d
|
refactor(compiler): 替换 std::unsafe_cast 为对象方法调用并优化类型转换
- 将测试文件中的 std::unsafe_cast 调用替换为对应的 toStd* 方法
- 移除 std::unsafe_cast 函数实现,改为使用 $source->toStdMap 等方法
- 更新错误消息输出,移除函数名前缀
- 添加 TO_METHOD_TYPE_MAP 常量定义类型转换方法映射
- 修改变量赋值检查逻辑,支持新的 to* 转换方法
- 移除对 objval 函数的支持,统一使用 toObject 方法
- 新增 parseToStdAssign 方法处理标准容器转换分配
- 添加 genToObjectCall 和 genToConvertCall 代码生成方法
- 重构 UniversalMethodCall 类,移除重复的转换方法定义
- 优化类型检测逻辑,支持新的转换方法类型推断
|
3 months ago |
韩天峰
|
08f90e2df9
|
feat(php): 添加对box类型的支持
- 在CompilerBase中添加TYPE_BOX常量定义
- 将box类型映射到php::Box类型标识符
- 修改类型解析逻辑以支持box伪类型处理
- 更新gen_stub.php中的类型转换和映射逻辑
- 在StdContainerParser中扩展box类型处理
- 添加box类型到类型搜索顺序数组中
- 实现box类型与其他类型的转换逻辑
|
3 months ago |
韩天峰
|
4c3d7ca4c3
|
feat(compiler): 添加对 bigint、bigfloat 和 decimal 类型的支持
- 在 zendTypeMap 中添加了 bigint、bigfloat 和 decimal 类型映射
- 实现了类型名称的大小写不敏感匹配逻辑
- 添加了对 std 类中 bigInt、bigFloat 和 decimal 方法的类型推断
- 支持 native_types、decimal_types 和 bigint_types 的大小写不敏感解析
- 在 polyfills.php 中定义了新的类型常量
- 添加了相关测试用例验证大数运算功能
- 优化了变量类型检测和赋值时的类型处理逻辑
|
3 months ago |
韩天峰
|
011cb1ed8c
|
test(aot): 添加大整数、大浮点数、十进制数和流类型的容器测试
- 添加 std-bigfloat 类型的 vector 容器功能测试
- 添加 std-bigint 类型的 vector、map、array 和 foreach 功能测试
- 添加 std-decimal 类型的 vector 容器功能测试
- 添加 std-stream 类型的 vector 容器功能测试
- 实现容器元素类型转换逻辑支持大数值类型
- 修复容器声明中的元素类型转换问题
- 添加新的原生类型映射支持 bigint、bigfloat、decimal 和 stream 类型
|
3 months ago |
韩天峰
|
11acfdf10f
|
refactor(aot): 移除UnsafePtr类型支持并优化std容器实现
- 移除UnsafePtr类型声明及相关参数标记功能
- 修改std容器变量访问方式,统一使用_ref后缀引用
- 更新unsafe_cast函数参数验证逻辑,移除UnsafePtr参数检查
- 重构std容器在C++代码中的声明和初始化方式
- 删除相关测试用例及单元测试中的UnsafePtr验证逻辑
- 统一std容器赋值、遍历、删除操作的引用访问模式
|
3 months ago |
韩天峰
|
ea462010d1
|
feat(compiler): 添加标准容器foreach循环支持和删除元素保护
- 实现std::map和std::unordered_map的foreach循环功能
- 实现std::array和std::vector的foreach循环功能
- 添加在foreach循环中删除容器元素的保护机制
- 添加标准容器类型的变量检查和类型验证
- 更新标准容器声明语法以支持键值类型参数
- 添加标准容器键值类型推断功能
|
4 months ago |
韩天峰
|
fa2cb45df5
|
test(aot): 添加标准容器复制赋值功能测试
- 新增 std map 相同类型复制测试用例
- 新增 std unordered_map 相同类型复制测试用例
- 新增 std array 嵌套相同类型复制测试用例
- 新增 std vector 相同类型复制测试用例
- 实现标准容器复制赋值语法解析功能
- 添加嵌套数组访问层级检查机制
- 完善类型匹配验证逻辑
|
4 months ago |
韩天峰
|
4411216354
|
refactor(aot): 简化 unsafe_ptr 使用并改进错误处理
- 移除手动创建 unsafe_ptr 的调用,直接传递容器变量
- 添加对 UnsafePtr 参数重新赋值的错误检查
- 验证 UnsafePtr 参数必须是标准容器变量
- 更新 unsafe_cast 错误消息以反映参数要求
- 移除不再需要的 unsafe_ptr 解析方法
- 添加新的测试用例验证各种错误场景
|
4 months ago |
韩天峰
|
5d1e8d893c
|
refactor(aot): 优化 unsafe_cast 类型转换实现
- 将 std::unsafe_cast 的类型检查逻辑重构为统一的模板函数
- 修改异常类型从 RuntimeException 为 TypeError
- 更新编译器代码生成以使用新的类型转换函数
- 添加对 std::map 和 std::unordered_map 的类型转换支持
- 创建新的测试用例验证各种容器类型的 unsafe_cast 行为
- 修正现有测试用例中的异常类型断言
|
4 months ago |
韩天峰
|
7f4dee40c0
|
fix(aot): 解决std容器unsafe_cast类型检查问题
- 添加了stdTypeMap用于存储标准类型映射关系
- 实现了registerStdType方法用于注册标准类型ID
- 为std数组、向量和映射容器添加了类型ID分配逻辑
- 在unsafe_cast操作中增加了类型ID验证机制
- 添加了类型不匹配时的异常抛出功能
- 修复了self::class和parent::class的命名空间解析问题
- 更新了unsafe_ptr创建时的类型ID传递逻辑
- 添加了多个测试用例验证类型不匹配场景
|
4 months ago |
韩天峰
|
79bc9d4e69
|
feat(aot): 添加对UnsafePtr类型和相关函数的支持
- 在ArgInfo类中添加unsafePtr属性
- 添加UnsafePtr类型到编译器类型映射
- 实现std::unsafe_ptr()和std::unsafe_cast()函数的解析和处理逻辑
- 添加对UnsafePtr类型的变量跟踪和验证机制
- 支持通过unsafe_cast进行标准容器的不安全转换
- 添加相应的单元测试验证功能正确性
|
4 months ago |
韩天峰
|
ee240aed25
|
test(php): 添加标准容器静态类匹配测试用例
- 添加 testStdContainerStaticClassMismatch 测试方法验证对象分配错误
- 更新 StdContainerParser 中的 fatal error 消息格式保持一致性
|
4 months ago |
韩天峰
|
872c98fc28
|
fix(std-container): 修复标准容器类值类型的精确检查逻辑
- 将 std::vector 的类值类型精确匹配测试添加到测试套件
- 修复 std::map 错误消息格式以显示正确的参数对象类型验证
- 添加 std::unordered_map 的类值类型精确匹配测试用例
- 添加 std::array 的类值类型精确匹配测试用例
- 简化 StdContainerParser 中的对象转换逻辑,使用统一的 toObject 方法进行类型检查和转换
|
4 months ago |
韩天峰
|
73bf28667d
|
feat(compiler): 添加对标准容器类型的完整支持
- 实现了标准数组维度获取的类型检测和解析功能
- 扩展了类型转换系统以支持字符串、数组和对象类型
- 在polyfills.php中添加了新的类型常量和容器函数定义
- 重构了标准容器解析器以支持复杂的值类型验证
- 实现了标准容器赋值操作中的类型安全检查
- 添加了类值类型的支持和验证机制
- 完善了标准容器的类型信息解析和存储功能
|
4 months ago |
韩天峰
|
22966d0553
|
feat(php): 扩展标准容器支持功能
- 将StdArrayParser重命名为StdContainerParser以支持更多容器类型
- 添加对std::vector、std::map和std::unordered_map的支持
- 新增TYPE_STD_VECTOR、TYPE_STD_MAP和TYPE_STD_UNORDERED_MAP常量定义
- 实现std容器表达式解析和类型检测功能
- 扩展函数上下文中的容器存储结构
- 添加polyfill类以支持复杂类型定义
- 实现容器维度获取、赋值操作和类型转换功能
- 支持容器的偏移设置和键值类型转换功能
|
4 months ago |