韩天峰
|
0647b6425a
|
fix(php): 修复类常量解析和对象转换功能
- 添加对 self::class、parent::class 和 static::class 的支持
- 实现 parent::class 的继承链验证和错误处理
- 禁止使用 static::class 并提示编译时无法解析
- 移除 objval() 函数中的冗余参数验证逻辑
- 为 self::class 和 parent::class 场景添加测试用例
- 更新版本号至 1064
- 添加 yield 示例代码文件
|
3 months ago |
韩天峰
|
a524211cd3
|
refactor(php): 重构PHP编译器基础功能并完善类继承支持
- 将parseFunction方法从CompilerBase.php迁移到Translator.php中
- 添加SsaBuilder和Skip异常类的引入声明
- 移除Preprocessor.php中的方法重写检测逻辑
- 在Translator.php中恢复类方法重写的检测和处理机制
- 添加新的继承测试示例文件A0.php、C0.php和main.php
- 更新simple.php示例文件内容
- 优化函数解析过程中的SSA分析和变量类型优化逻辑
|
3 months ago |
韩天峰
|
c5f38a3d05
|
fix(parser): 修复变量类型推断问题
- 当右侧表达式为无类型但左侧变量已有已知原生类型时,
使用左侧类型进行转换以确保类型安全
- 在赋值操作中添加类型检查逻辑,避免类型丢失问题
- 更新 fibo 和 fibo_r 函数参数类型声明为 int
- 添加 issetor 性能测试用例以验证类型推断优化效果
|
3 months ago |
韩天峰
|
5e549a4c15
|
perf(compiler): 优化静态属性访问性能并增强类型检查
- 添加对静态属性 unset 操作的错误处理
- 实现静态属性的 C++ 引用优化提升访问性能
- 为整型和浮点型静态属性添加原生引用支持
- 在函数上下文中添加静态属性引用映射表
- 更新微基准测试包含静态属性操作性能测试
- 添加静态属性 unset 的单元测试用例
- 修复静态属性访问相关的类型声明问题
|
3 months ago |
韩天峰
|
9eec3e7483
|
feat(aot): 添加对全局变量和Stmt_Block语句块的支持
- 在CompilerBase中添加Stmt_Block解析支持
- 新增global-int测试用例验证全局变量整型操作
- 新增globals-null-arithmetic测试用例处理NULL全局变量算术运算
- 修复switch语句缩进格式问题
- 初始化micro_bench中last_time变量
- 注释掉部分性能测试以聚焦核心功能
|
3 months ago |
韩天峰
|
c604fc09ab
|
feat(compiler): 添加对 Big* 类型的字符串转换和数学函数优化支持
- 在 echo 表达式中实现 BigInt、BigFloat 和 Decimal 类型的自动 toString 转换
- 为 abs、pow、sqrt、floor、ceil、round 数学函数添加 Big* 类型返回值推断
- 优化二进制连接操作中的类型转换逻辑,支持 Big* 类型到字符串的转换
- 为 (string) 强制转换、strval() 函数和 floor/ceil/round 函数添加 Big* 类型支持
- 新增测试用例验证 Big* 类型的数学函数优化功能
- 添加 Decimal 类型的精确计算和舍入处理示例
|
3 months ago |
韩天峰
|
8a9a8ce138
|
feat(cli): 添加 AST 语法树导出工具和大整数示例
- 新增 bin/dump-ast.php 脚本用于导出 PHP 文件的 AST 结构
- 实现了完整的 AST 节点递归转换和美化打印功能
- 添加了 examples/bigint/bigint.php 大整数测试示例
- 集成了 PhpParser 库进行语法树解析
- 提供了命令行参数验证和错误处理机制
- 实现了 AST 节点类型的智能识别和信息提取
|
3 months ago |
韩天峰
|
5c86bf39f1
|
feat(examples): 添加 PHP 反射 API 示例程序
- 实现了打印内置函数参数和返回值类型信息的功能
- 添加了打印用户自定义函数信息的支持
- 实现了打印类方法参数和返回值类型信息的功能
- 添加了打印闭包(Closure)信息的支持
- 提供了完整的反射细节打印功能
- 支持联合类型、交集类型等复杂类型格式化
- 包含了 tentative return type 的
|
3 months ago |
韩天峰
|
6309346c9a
|
feat(core): 通用方法实现,纯静态,零成本抽象
|
3 months ago |
韩天峰
|
28b6c6e726
|
feat(debug): 添加调试信息支持以改进异常回溯功能
- 实现函数级别的调试信息生成,包括类方法和全局函数
- 添加命名空间前缀到调试函数名称中
- 集成 php::pushDebugFrame 和 php::popDebugFrame 用于运行时调试栈管理
- 添加调试信息启用和禁用机制
- 为嵌套函数调用添加异常传播测试用例
- 创建调试跟踪示例文件以验证功能实现
|
3 months ago |
韩天峰
|
8a27a0055b
|
feat(jni): 添加JNI扩展功能支持Java与PHP交互
- 在.gitignore中添加*.class文件忽略规则
- 新增Hello.java示例类用于JNI测试
- 实现完整的JNI C++桥接代码,包括类型转换和异常处理
- 添加PHP stub文件定义JNI相关函数接口
- 创建main.php演示程序展示JNI功能使用方法
- 配置project
|
3 months ago |
韩天峰
|
73bf28667d
|
feat(compiler): 添加对标准容器类型的完整支持
- 实现了标准数组维度获取的类型检测和解析功能
- 扩展了类型转换系统以支持字符串、数组和对象类型
- 在polyfills.php中添加了新的类型常量和容器函数定义
- 重构了标准容器解析器以支持复杂的值类型验证
- 实现了标准容器赋值操作中的类型安全检查
- 添加了类值类型的支持和验证机制
- 完善了标准容器的类型信息解析和存储功能
|
4 months ago |
韩天峰
|
b17b4acbac
|
feat(build): 添加 Windows 资源文件支持功能
- 在 .gitignore 中添加 node_modules 目录
- 在 Msvc.php 中添加 compileResourceFile 方法用于编译 .rc 资源文件
- 新增 package.json 配置文件及 svg-to-ico.js 转换脚本
- 在 project.yml 中添加 Windows 资源文件配置示例
- 添加 swoole-logo.svg 图标文件
- 在 Translator.php 中集成资源文件生成功能
- 实现资源文件编译和链接到最终可执行文件的流程
- 更新版本号从 1049 到 1051
|
4 months ago |
韩天峰
|
c79573a9fe
|
fix(php): 修复编译器基类中的回溯打印和类型返回验证问题
- 将 printBacktraceOnError 默认值从 false 修改为 true
- 扩展子类作为父类返回时的类型检查,支持抽象类或接口
- 更新 SimpleType::fromNode 和 fromString 方法以支持 ArrayType 返回类型
- 修改测试用例中 ZipArchive 的路径处理逻辑
- 更新测试输出预期结果以匹配新的行为
|
4 months ago |
韩天峰
|
6cc40059e0
|
feat(game): 将俄罗斯方块游戏重构为纯PHP逻辑实现
- 移除原有的C++游戏逻辑,将所有游戏状态管理转为PHP实现
- 添加TetrisBoard类处理游戏核心逻辑(碰撞检测、方块锁定、消除行等)
- 添加TetrisRenderer类负责Win32图形渲染
- 定义完整的俄罗斯方块形状和颜色常量数组
- 实现键盘控制(左右移动、旋转、硬降等功能)
- 添加计分系统和等级计算功能
- 更新C++层仅提供Win32 API封装(窗口创建、绘图原语等)
- 修改游戏主循环处理Windows消息和自动下落逻辑
- 添加游戏结束检测和重新开始功能
|
4 months ago |
韩天峰
|
16259f095d
|
fix(game): 修复俄罗斯方块游戏的SDL资源管理和退出机制
- 添加sdlInitialized标志跟踪SDL初始化状态
- 实现cleanup方法确保窗口和渲染器正确释放
- 使用SDL_PushEvent替代SDL_Quit解决退出冲突
- 修复析构函数中的资源清理逻辑
|
4 months ago |
韩天峰
|
9186d04da4
|
refactor(backend): 将调试配置选项从 debug_info 统一更改为 debug
- 将所有编译器后端(GCC、Clang、MSVC)中的 debug_info 参数重命名为 debug
- 更新单元测试中相应的配置选项参数名称
- 修改命令行参数解析从 --debug-info 改为 --debug
- 调整文档中关于调试选项的描述和示例
- 修复链接阶段不应包含调试符号的逻辑错误
- 重构内部调试变量命名从 debugInfo 改为 debug
- 更新 YAML 配置文件中的调试选项键名
|
4 months ago |
韩天峰
|
e80083bf6a
|
docs(tetris): 添加俄罗斯方块游戏示例项目和相关文档
- 新增 BOX_USAGE_GUIDE.md 详细说明 Box 机制使用方法
- 添加 main.php 实现游戏逻辑和 SDL 图形操作
- 创建 project.yml 项目配置文件
- 新增 PROJECT_SUMMARY.md 项目完成总结文档
- 添加 QUICKSTART.md 快速开始指南
- 创建 README.md 项目说明文档
- 添加 README_SDL.md SDL 版本说明文档
|
4 months ago |
韩天峰
|
2bf36baf56
|
俄罗斯方块示例程序
|
4 months ago |
韩天峰
|
619c482c7d
|
docs(examples): 添加俄罗斯方块游戏示例项目
- 新增完整的俄罗斯方块游戏实现,展示PHP与C++混合编程
- 添加TetrisBox类继承Box机制进行对象封装传递
- 实现Windows GUI界面创建和GDI图形渲染功能
- 提供游戏主循环、键盘输入处理和自动下落逻辑
- 添加项目配置文件、快速开始指南和详细使用手册
- 包含类型映射规则说明和最佳实践总结
|
4 months ago |
韩天峰
|
7ee5f8e018
|
删除无效的文档
|
4 months ago |
韩天峰
|
daa5379e46
|
feat(std-array): 添加标准数组类型支持
- 添加了 TYPE_STD_ARRAY 常量定义
- 在全局头文件列表中加入 phpx_std_array.h
- 修复了嵌套数组索引解析逻辑,使用 convertIntExpr 方法转换整数表达式
- 优化了 std::array 函数参数解析,直接获取数值而非解析标量值
- 使用 TYPE_STD_ARRAY 常量替换硬编码的 std::array 字符串
- 修改返回值为注释格式的声明字符串以便调试
|
4 months ago |
韩天峰
|
faf6fe7a6b
|
feat(php): 添加对多维标准数组维度访问的支持
- 在 CompilerBase 中实现多维数组维度提取和转换逻辑
- 为 StdArrayParser 的 parseStdArrayDimFetch 方法添加 toArray 参数支持
- 修正 std::array 维度访问边界检查和错误消息格式
- 添加多维数组维度访问验证以防止维度不匹配错误
- 更新示例代码以测试多维标准数组功能
|
4 months ago |
韩天峰
|
817c056859
|
example(error): 添加资源类型参数示例代码
- 创建了 resource.php 示例文件
- 定义了接受 resource 类型参数的函数 foo
- 实现了通过 fopen 打开 stdin 流的功能
- 添加了主函数调用演示 resource 参数传递
|
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 |
韩天峰
|
673f3b3dc5
|
refactor(preprocessor): 重构参数声明生成逻辑
- 添加 genArgumentDeclaration 方法统一处理参数声明格式
- 将参数声明逻辑从多个位置提取到独立方法中
- 简化可变参数和普通参数的声明处理流程
- 更新版本号从 1002 到 103
- 删除废弃的示例文件 test1.cc
- 添加混合类型声明的测试用例
|
4 months ago |
韩天峰
|
81957f56d7
|
feat(php): 更新符号常量并添加参数列表支持
- 在Symbol类中添加argList方法返回'php::ArgList'
- 修改CompilerBase中参数列表的返回值格式
- 添加count-array.php示例文件展示数组计数功能
|
4 months ago |
韩天峰
|
b5ef65edc2
|
feat(compiler): 添加 Windows Clang 编译器支持
- 实现智能编译器检测,支持 PHPX_CC 环境变量优先级
- 添加 isClangAvailable() 方法检测 PATH 和 Visual Studio LLVM 路径
- 实现 Windows Clang 编译选项处理,使用 GCC 风格参数
- 添加 lld-link 链接器支持,提供比 link.exe 更快的链接速度
- 支持 Clang 完整的 Sanitizer 功能(AddressSanitizer、UBSan 等)
- 更新编译命令构建逻辑,区分 MSVC 和 Clang 参数格式
- 添加详细的 Windows Clang 使用指南和测试文档
|
4 months ago |
韩天峰
|
334594c659
|
feat(compiler): 实现 C++ 标准独立配置功能
- 将 C++ 标准从 cxxflags 中分离,支持 --cxx-std 参数配置
- 添加 project.yml 中的 cxx_std 配置项,支持独立设置标准版本
- 实现 Windows 和 Unix 平台的差异化默认标准(Windows 使用 c++17,Unix 使用 c++14)
- 添加 /NODEFAULTLIB 选项解决 Windows CRT 库冲突问题
- 增加 --debug-info 参数支持,自动禁用优化并生成调试信息
- 更新配置优先级规则文档,明确命令行参数、YAML 配置和默认值的覆盖关系
- 添加 C++ 标准配置指南和调试模式使用说明
- 修复 cxxflags 中标准标志被忽略的问题
|
4 months ago |
韩天峰
|
20436c5e41
|
refactor(php): 重构 MSVC 警告屏蔽机制
- 将硬编码的警告屏蔽改为从 Constants 配置中动态读取
- 添加 MSVC_SUPPRESSED_WARNINGS 常量数组管理所有警告代码
- 扩展警告屏蔽范围,涵盖 Windows SDK 和 PHP SDK 的常见警告
- 在示例项目中添加 MSVC 警告屏蔽说明文档链接
|
4 months ago |
韩天峰
|
b4b735644d
|
feat(php): 添加PHP编译器基础类实现
- 实现了PHP到C++的代码转换核心功能
- 添加了AST节点解析和类型系统映射
- 实现了变量、函数、类的声明和调用处理
- 集成了PHPParser进行语法树解析
- 添加了跨平台编译支持(Windows、Linux、macOS)
- 实现了字面量字符串管理和内存优化
- 添加了全局变量和超全局变量处理
- 实现了魔术方法检测和闭包生成器
- 集成了CLImate库提供命令行界面支持
- 添加了错误处理和调试信息生成功能
- 实现了代码格式化和文件保存功能
|
4 months ago |
韩天峰
|
b1272f47e7
|
feat(php): 添加PHP编译器基础类实现
- 实现PHP到C++的代码转换功能
- 添加表达式解析和类型系统支持
- 集成AST节点处理和代码生成逻辑
- 实现跨平台编译器检测和配置
- 添加PHP版本兼容性检查
- 实现字面量字符串和变量管理
- 添加函数和类定义映射机制
- 实现命名空间和类型声明处理
|
4 months ago |
韩天峰
|
8994813b8b
|
feat(compiler): 添加 Windows GUI 模式编译支持
- 新增 --no-console 参数用于隐藏控制台窗口
- 实现 Windows 子系统编译选项 (/SUBSYSTEM:WINDOWS)
- 添加 mainCRTStartup 入口点配置
- 更新编译器常量定义和参数解析
- 创建 GUI 模式示例程序 hello-gui.php
- 创建控制台模式示例程序 hello-console.php
- 完善 Windows GUI 程序开发文档
- 更新项目 README 说明和使用指南
|
4 months ago |
韩天峰
|
09ea347c11
|
feat(win32-hello): 添加中国时区支持并更新最佳实践指南
- 在 hello-win.php 中添加 date_default_timezone_set('Asia/Shanghai')
- 在 main.php 中添加 date_default_timezone_set('Asia/Shanghai')
- 在 CHINESE_SUPPORT_GUIDE.md 中添加时区设置说明
- 更新最佳实践列表,添加时区设置建议
- 更新 .gitignore 添加 *.obj 文件忽略规则
|
4 months ago |
韩天峰
|
d50aa88504
|
docs(examples): 添加 Win32 Hello World 示例项目和相关文档
- 添加 Windows 中文支持指南文档
- 添加 PHPX 编译器 C++ 函数导出规范文档
- 添加编码指南文档
- 创建 hello-win.php 主程序文件
- 创建 main.php 简单消息框示例文件
- 创建 window.php 完整窗口示例文件
- 添加项目配置文件 project.yml
- 创建 README.md 项目说明文档
- 添加 C++ Windows API 封装实现文件 winapi.cc
- 添加 C++ 函数声明桩文件 winapi.stub.php
|
4 months ago |
韩天峰
|
b1df315299
|
feat(compiler): 支持 PHP 嵌入模式并改进 Windows 编译配置
- 添加 php8embed.lib 支持作为嵌入模式首选库文件
- 更新 Windows 库文件查找顺序以支持嵌入模式
- 区分 C 和 C++ 文件的编译选项处理
- 将宏定义应用限制在编译阶段而非链接阶段
- 更新 Windows 链接器使用 link.exe 替代编译器
- 添加 .dll 和 .exe 文件到 .gitignore
- 修复 PHP ZTS 检测逻辑移除严格比较
- 移除示例中的环境变量输出以减少冗余信息
- 添加 C++ 异常处理支持和标准版本指定
|
4 months ago |
韩天峰
|
15f9d35c69
|
refactor(examples): 优化基准测试和协程示例代码
- 在 simplecall 函数中添加计算总和并打印结果
- 统一函数定义的大括号格式
- 修复 matrix 和 sieve 函数的参数类型声明
- 调整 return 语句的括号格式
- 使用 Swoole\Coroutine\run 函数别名简化调用
|
4 months ago |
韩天峰
|
c4b7e3022a
|
fix(php): 修复函数use语句解析问题
- 修正useFunctions映射返回值,确保函数名正确拼接
- 修复use语句类型判断逻辑,处理未知类型情况
- 添加any函数polyfill支持
- 新增函数use测试用例验证功能正确性
|
4 months ago |
韩天峰
|
935aeb8b1b
|
refactor(php): 重构变量赋值类型检查逻辑
- 将复杂的类型检查条件判断提取到独立的 checkVarAssignExpr 方法中
- 移除 CompilerBase.php 中的冗长条件判断逻辑
- 在 MagicMethodDetector.php 的 __toString 检查中添加严格类型参数
- 添加 str.php 示例文件用于测试字符串类型转换
- 更新 myext/test.php 添加环境变量访问示例
- 在 Translator.php 中添加 clang-format 版本检测逻辑
|
4 months ago |
韩天峰
|
eba8964d34
|
fix(php): 解决方法调用时的类型检查和反射问题
- 在方法调用前添加变量类型检查,防止对非对象类型调用方法
- 修复反射中获取方法返回类型的逻辑,改进变量命名避免冲突
- 添加对字符串类型参数调用对象方法的错误检测和提示
|
4 months ago |
韩天峰
|
2d0baeaea9
|
feat(examples): 添加 Swoole 相关示例代码
- 新增 Swoole 协程运行示例文件 co.php
- 添加错误常量引用示例文件 const-ref.php
- 创建 Swoole HTTP 服务器示例文件 http.php
- 实现基本的协程运行功能
- 集成 HTTP 服务器请求处理逻辑
- 添加异常处理和响应状态管理
|
4 months ago |
韩天峰
|
0293b28148
|
feat(compiler): 添加环境变量支持并优化打包流程
- 在编译器中添加 _ENV 全局变量数组支持
- 更新示例程序以演示环境变量访问功能
- 新增 package.sh 脚本实现自动化打包流程
- 集成 UPX 压缩优化二进制文件大小
- 完善打包脚本中的文件检查和错误处理机制
|
4 months ago |
韩天峰
|
0e319c48de
|
fix(php): 修复原生类型变量和对象属性的 unset 操作问题
- 修改对象属性 unset 警告消息为更准确的描述
- 添加对原生类型变量的 unset 操作检查和警告
- 阻止原生类型变量执行 unset 操作
- 新增 unset 原生类型变量的测试用例
- 完善变量类型检查逻辑以区分原生类型
|
4 months ago |
韩天峰
|
fbeac08f20
|
feat(php): 添加对象属性变量管理和取消设置检查功能
- 新增 getObjectPropVarName 方法用于生成对象属性变量名
- 新增 getObjectPropVarInfo 方法用于获取对象属性变量信息
- 新增 hasObjectPropVar 方法用于检查对象属性变量是否存在
- 将警告颜色从黄色更改为洋红色以提高可读性
- 在取消设置对象属性时添加不允许操作的警告提示
- 添加对整数类型属性取消设置的特殊处理逻辑
- 新增 unset-int-prop.php 示例文件演示属性取消设置行为
|
4 months ago |
韩天峰
|
9ed73be36f
|
refactor(examples): 更新PHP示例中的类型声明和代码结构
- 为Foo类的属性$b添加int类型声明
- 为read_prop和write_prop方法的参数$n添加int类型声明
- 移除python/sys.php文件开头的注释和无用函数定义
- 重新组织sys.php文件中的代码顺序,将main函数移到合适位置
- 保持原有的系统API调用功能不变
|
4 months ago |
韩天峰
|
2912b40b0f
|
feat(compiler): 添加原生类型支持和属性获取功能
- 在编译器基础类中添加了 Expr_PropertyFetch 表达式处理逻辑
- 实现了原生属性变量检测和类型推断功能
- 新增了属性获取表达式的原生属性变量标记机制
- 更新了多个示例文件以使用 native_types 命名空间
- 添加了默认数组属性测试用例验证功能
- 集成了 polyfills 支持并在主入口点传递命令行参数
|
4 months ago |
韩天峰
|
5bf12a10ed
|
feat(php): 添加对 trait 魔术常量 __TRAIT__ 的支持
- 在 CompilerBase 中添加 Scalar_MagicConst_Trait 的解析支持
- 为 __TRAIT__ 常量实现作用域检查逻辑
- 为 __CLASS__ 常量添加 trait 环境下的返回逻辑
- 在 Preprocessor 中添加类属性钩子不支持的错误提示
- 添加 trait 魔术常量的功能测试用例
- 更新 trait 示例代码以展示魔术常量使用
|
4 months ago |
韩天峰
|
d8a828558d
|
refactor(generator): 将模板渲染改为直接代码生成
- 将 extension.cc.php 模板文件删除,改为在 PHP 代码中直接生成 C++ 代码
- 修改 equalsApartFromNameAndRefcount 方法可见性为 public
- 在函数查找逻辑中添加 TODO 注释说明必须为 public 方法的原因
- 添加 scope.php 示例文件用于测试作用域相关功能
- 删除 simple.php 中的冗余注释代码
- 移除模板渲染方法 render 的实现
|
4 months ago |
韩天峰
|
ee3dbc9717
|
feat(compiler): 添加项目配置和扩展忽略功能
- 在 Translator 类中新增 ignoreExtensions 属性用于存储忽略的扩展
- 修改构造函数逻辑,将 main 函数从内部函数列表中移除
- 更新属性初始化代码,修复命名空间获取方式
- 在项目配置解析中添加对 ext-* 格式扩展的识别和忽略处理
- 添加测试用例验证对象构造器数组属性默认值功能
- 添加引用操作相关测试用例
- 新增项目配置文件示例
|
4 months ago |
韩天峰
|
69a1c24610
|
refactor(bootstrap): 调整函数文件加载方式并更新依赖
- 将 src/functions.php 从 composer autoloader 移至 bootstrap 文件直接引入
- 更新 composer.json 配置移除 functions.php 的文件自动加载配置
- 升级多个依赖包版本包括 league/climate、symfony 相关组件等
- 新增 ergebnis/agent-detector 依赖用于代理检测功能
- 更新 phpunit 和相关开发依赖到最新稳定版本
|
4 months ago |