韩天峰
|
30ad4dbb0e
|
feat(compiler): 实现函数作用域管理和类型声明优化
- 添加函数作用域层级管理功能,支持嵌套作用域跟踪
- 实现抽象类和接口类型的实例化检查,防止非法创建实例
- 优化参数类型声明处理,增加对象参数的作用域管理
- 添加标准数组创建的位置限制检查,确保在顶层作用域创建
- 扩展继承关系检查逻辑,支持内部接口的类型验证
- 增加完整的单元测试覆盖类型命中和声明功能
|
4 months ago |
韩天峰
|
1e22f19e63
|
refactor(php): stdArray 修改为在堆上分配内存,避免栈内存过大
|
4 months ago |
韩天峰
|
aa51b09fa9
|
fix(aot): 修复属性数组参数支持并调整编译器方法可见性
- 将 CompilerBase.php 中的 parseAssignOpBitwiseOr 方法从 private 改为 protected
- 将 CompilerBase.php 中的 error 方法从 protected 改为 public
- 在 gen_stub.php 中添加对属性数组参数的错误检查和提示
- 修复 Translator.php 中构建目录文件名使用 targetName 而非 getModuleName()
|
4 months ago |
韩天峰
|
588cd85ca4
|
chore(deps): 更新 swoole/phpx 依赖版本
- 将 swoole/phpx 从 ~2.1.5 升级到 ~2.1.6
- 更新项目版本号从 1051 到 1053
|
4 months ago |
韩天峰
|
72dbe6e35e
|
chore(build): 更新 .gitignore 配置
- 移除特定项目目录的单独忽略规则
- 添加 /projects 整体忽略规则
- 添加 PHP CS Fixer 缓存文件忽略
- 添加 PHPUnit 缓存文件忽略
- 添加对象文件 (*.o) 忽略规则
|
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 |
韩天峰
|
cc785eb7f7
|
refactor(php): 移除不再使用的 isWindows 属性
- 删除了 CompilerBase 类中的 isWindows 保护属性
- 移除了 initialize 和 getPlatform 方法中对 isWindows 的赋值操作
- 直接在条件判断中使用 platform 实例检查替代 isWindows 属性功能
|
4 months ago |
韩天峰
|
460ec638df
|
refactor(php): 优化foreach循环中的迭代器变量使用并更新编译器常量
- 使用临时变量替代直接使用iteratorVar以避免命名冲突
- 为Windows平台移除clang-format格式化检查逻辑
- 添加多个新的编译器错误代码和警告信息定义
- 更新迭代器访问方式以提高代码安全性和可读性
|
4 months ago |
韩天峰
|
eaa1b4cd9a
|
fix(php): 修复编译器基类中的回溯打印和类型返回验证问题
- 将 printBacktraceOnError 默认值从 false 修改为 true
- 扩展子类作为父类返回时的类型检查,支持抽象类或接口
- 更新 SimpleType::fromNode 和 fromString 方法以支持 ArrayType 返回类型
- 修改测试用例中 ZipArchive 的路径处理逻辑
- 更新测试输出预期结果以匹配新的行为
|
4 months ago |
韩天峰
|
76ed488b75
|
fix(php): 修复子类作为父类返回时的类型检查逻辑
- 添加了对 objectClass 是否存在的检查,避免空值导致的错误
- 改进了错误消息,明确显示具体的子类和父类名称
- 确保只有在 objectClass 存在且不等于 returnClass 时才进行抽象类验证
|
4 months ago |
韩天峰
|
b6645e90ce
|
test(named-args): 添加PHP 8+命名参数功能测试用例
- 创建了针对构造函数的命名参数调用测试
- 验证了字符串、整数和浮点数类型的参数传递
- 测试了参数顺序无关的传参机制
- 确保命名参数语法的正确解析和执行
|
4 months ago |
韩天峰
|
42dae8ceaa
|
返回类不匹配时,必须是抽象类
|
4 months ago |
韩天峰
|
954c0f399b
|
feat(build): 更新 Windows 打包脚本以支持新示例和配置文件
- 在打包列表中添加 composer.json 文件
- 增加对 tetris-win32 示例项目的复制支持
- 实现文件扩展名排除功能以过滤 .obj 目标文件
- 更新 copyDirectory 函数以支持扩展名过滤参数
- 修改打包清单显示以反映新增的配置文件和示例
- 将版本号从 1035 更新至 1049
|
4 months ago |
韩天峰
|
9443895bfb
|
feat(build): 添加 Windows 打包脚本
- 新增 package-on-windows.php 脚本用于 Windows 平台打包
- 实现自动检测系统架构 (AMD64/ARM64/x86) 并生成对应版本
- 集成 UPX 压缩优化功能,支持可执行文件压缩
- 自动复制 PHP 运行时、phpx 库文件和头文件到打包目录
- 包含项目文档、示例代码和 vendor 依赖包
- 生成带版本号的 ZIP 压缩包,便于分发部署
|
4 months ago |
韩天峰
|
6cc40059e0
|
feat(game): 将俄罗斯方块游戏重构为纯PHP逻辑实现
- 移除原有的C++游戏逻辑,将所有游戏状态管理转为PHP实现
- 添加TetrisBoard类处理游戏核心逻辑(碰撞检测、方块锁定、消除行等)
- 添加TetrisRenderer类负责Win32图形渲染
- 定义完整的俄罗斯方块形状和颜色常量数组
- 实现键盘控制(左右移动、旋转、硬降等功能)
- 添加计分系统和等级计算功能
- 更新C++层仅提供Win32 API封装(窗口创建、绘图原语等)
- 修改游戏主循环处理Windows消息和自动下落逻辑
- 添加游戏结束检测和重新开始功能
|
4 months ago |
韩天峰
|
661ab07cd9
|
refactor(backend): 重构编译器后端实现以支持自定义编译器路径
- 修改 Clang 和 Gcc 类构造函数以接受自定义编译器命令参数
- 引入 CompilerFactory 来统一管理编译器创建和检测逻辑
- 更新 BackendTest 添加对自定义编译器路径的支持测试
- 实现 Windows 平台下 lld-link 检测和回退机制
- 重构 CompilerBase 类中的平台和编译器初始化逻辑
- 移除旧的平台特定检测方法并整合到 PlatformFactory
- 更新编译和链接命令构建以使用新的后端抽象层
- 优化 include paths、library paths 和 libraries 的处理流程
- 改进目标文件扩展名和链接选项的跨平台处理
|
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 |
韩天峰
|
c4f828b30a
|
fix(build): 统一调试选项配置并支持自定义链接器标志
- 将所有后端编译器的调试选项从 'debug' 统一更改为 'debug_info'
- 在 GCC 和 Clang 后端移除重复的调试标志添加逻辑
- 在 CompilerBase 中添加对用户自定义 ldflags 的支持
- 确保所有平台的调试信息配置保持一致
|
4 months ago |
韩天峰
|
2bf36baf56
|
俄罗斯方块示例程序
|
4 months ago |
韩天峰
|
8f45f9a803
|
chore(version): 更新版本号从 1003 到 1035
- 将 version.txt 文件中的版本号从 1003 更新为 1035
|
4 months ago |
韩天峰
|
619c482c7d
|
docs(examples): 添加俄罗斯方块游戏示例项目
- 新增完整的俄罗斯方块游戏实现,展示PHP与C++混合编程
- 添加TetrisBox类继承Box机制进行对象封装传递
- 实现Windows GUI界面创建和GDI图形渲染功能
- 提供游戏主循环、键盘输入处理和自动下落逻辑
- 添加项目配置文件、快速开始指南和详细使用手册
- 包含类型映射规则说明和最佳实践总结
|
4 months ago |
韩天峰
|
fa9dde33c6
|
config(php): 修改编译器默认配置选项
- 将 formatCode 默认值从 true 改为 false
- 将 printBacktraceOnError 默认值从 true 改为 false
|
4 months ago |
韩天峰
|
7ee5f8e018
|
删除无效的文档
|
4 months ago |
韩天峰
|
67496f6bf6
|
feat(php): 添加MSVC编译器警告抑制功能
- 在Constants.php中新增未使用的局部变量和未引用标签的警告代码
- 实现MSVC后端对suppressed_warnings选项的支持
- 添加循环遍历警告代码并构建/wd参数的功能
- 集成警告抑制到编译命令中
|
4 months ago |
韩天峰
|
cd3657ec05
|
命名参数调用完成后,快速销毁临时数组,减少内存占用时间
|
4 months ago |
韩天峰
|
ffa4ae8dae
|
refactor(backend): 重构编译器架构为Platform+Backend双层抽象
- 实现Platform层抽象(Windows/Linux/MacOS)
- 实现Backend层抽象(MSVC/GCC/Clang)
- 添加适配器方法连接新旧架构
- 修复ZTS宏缺失和库文件链接顺序问题
- 创建MSVC环境初始化脚本和文档
- 完成8个单元测试,26个断言全部通过
- 建立清晰的职责分离和向后兼容机制
|
4 months ago |
韩天峰
|
217a638314
|
chore(build): 添加 PHP 单元测试缓存文件到忽略列表
- 添加 /.phpunit.cache 到 .gitignore 文件
- 防止 PHP 单元测试缓存文件被提交到版本控制
|
4 months ago |
韩天峰
|
51298c2d00
|
feat(backend): 添加 C 文件编译命令构建功能
- 在 Clang 类中实现 buildCCompileCommand 方法,支持 C 文件的编译命令构建
- 为 CompilerBackend 接口添加 buildCCompileCommand 抽象方法定义
- 在 Windows 平台下自动添加 MSVC 兼容性选项
- 支持调试模式下的优化级别控制和调试符号生成
- 添加警告级别设置确保代码质量检查
- 保持 C 文件编译时不使用 C++ 特定的编译选项
|
4 months ago |
韩天峰
|
6251d4d168
|
refactor(php): 简化编译器基类中的包含路径和库路径解析逻辑
- 移除新旧架构判断逻辑,直接使用简化后的解析方法
- 删除 parseIncludesNew、parseIncludesLegacy 和 parseWindowsIncludes 方法
- 删除 parseLdflagsNew、parseLdflagsLegacy 和 parseWindowsLdflags 方法
- 删除 parseLibsNew 和 parseLibsLegacy 方法
- 删除 addCompilationOptionNew 方法
- 更新 Translator 类中的包含路径解析调用
- 统一使用 platform 对象进行包含路径、库路径和库文件解析
|
4 months ago |
韩天峰
|
95a742f6b7
|
移除旧的编译构建代码
|
4 months ago |
韩天峰
|
2b97cee9e0
|
refactor(php): 重构平台检测逻辑的调用位置
- 将 detectPlatform 方法调用从 CompilerBase 移至 Translator 类中
- 删除 CompilerBase 中已注释的 no-literal-strings 参数处理代码
- 优化代码结构以提高平台检测的执行时机
|
4 months ago |
韩天峰
|
028a83dcb2
|
feat(compiler): 添加编译器选择机制和平台优化
- 实现基于环境变量的编译器选择(PHPX_CC > CXX > 平台默认)
- 支持通过 YAML 配置文件指定 cpp-compiler 选项
- 为 macOS、Linux、Windows 自动选择合适的默认编译器
- 优化 PHP 路径检测逻辑,移除硬编码路径依赖
- 为 extension 和 bin 模式统一添加 PHP 库链接
- 在 macOS 上实现 RPATH 支持以解决动态库加载问题
- 添加对多种构建模式名称的映射支持(extension/ext/binary/bin/cli)
|
4 months ago |
韩天峰
|
054560c0f9
|
feat(php): 添加 C++ 编译器配置支持并优化 PHP 路径查找逻辑
- 新增 setCppCompiler 方法用于设置 C++ 编译器
- 支持从配置文件读取 cpp-compiler 配置项
- 优化 Unix/Linux/macOS 系统 PHP 路径查找逻辑,增加环境变量 PHP_HOME 支持
- 改进共享库扩展名处理,统一处理带点和不带点的情况
- 添加多个常见 PHP 8.4 安装路径的自动检测
|
4 months ago |
韩天峰
|
cbf4280fa0
|
test: fix phpx directory test script
|
4 months ago |
韩天峰
|
4d04b34cc8
|
test: add phpx directory detection test
|
4 months ago |
韩天峰
|
c4c218485a
|
refactor: unify phpx directory detection logic across all platforms
|
4 months ago |
韩天峰
|
10e79ac268
|
fix(Linux): use php-config to dynamically get include paths
|
4 months ago |
韩天峰
|
bcef27c44a
|
test(backend): 添加后端编译器单元测试并修复编译选项构建功能
- 添加 BackendOptionsTest.php 测试 MSVC/GCC/Clang 编译选项构建
- 添加 BackendTest.php 测试后端编译器基本功能和完整编译流程
- 在 Clang.php 中实现 buildFullCompileOptions 和 buildFullLinkOptions 方法
- 创建 BUGFIX_MISSING_INCLUDE_PATHS.md 文档记录包含路径缺失问题
- 修复编译选项中缺少包含路径导致的编译失败问题
- 实现平台特定的编译选项处理(Windows MSVC 兼容模式等)
|
4 months ago |
韩天峰
|
95827cfb73
|
feat(backend): 添加编译器和平台抽象层实现
- 实现 CompilerBackend 抽象基类定义编译器接口
- 添加 Clang、GCC、MSVC 编译器后端具体实现
- 创建 PlatformBase 抽象基类定义平台接口
- 添加 Windows、Linux、macOS 平台具体实现
- 实现 CompilerFactory 工厂类自动创建编译器
- 实现 PlatformFactory 工厂类自动检测平台
- 提供跨平台路径处理和命令行参数生成
- 添加完整的使用示例和架构说明文档
|
4 months ago |
韩天峰
|
0793a647ee
|
refactor(php): 重构 Windows 编译选项配置以提高代码可维护性
- 将 Windows MSVC 编译选项逻辑拆分为多个专用方法
- 添加 Windows Clang 编译选项的模块化配置方法
- 实现平台宏定义、优化调试选项和警告设置的独立处理
- 分离编译时和链接时选项配置逻辑
- 提取子系统选项配置到单独方法中
- 改进 sanitizer 支持的错误处理和信息提示
- 优化代码结构以增强可读性和扩展性
|
4 months ago |
韩天峰
|
dcaf2878dd
|
优化 Windows 平台下的 lib 检测机制
|
4 months ago |
韩天峰
|
39019ccd4a
|
Revert "style(config): 更新PHP代码样式配置"
This reverts commit 08890ea630.
|
4 months ago |
韩天峰
|
a792990553
|
fix(build): 修复Windows下编译器选择逻辑
- 修改Windows下编译器优先级顺序为:PHPX_CC环境变量 > cl (MSVC, 默认) > clang
- 移除Clang作为默认首选编译器的逻辑
- 添加MSVC作为默认编译器的稳定性说明
- 更新相关注释以反映新的编译器选择策略
|
4 months ago |
韩天峰
|
08890ea630
|
style(config): 更新PHP代码样式配置
- 将单引号设置为false以禁用单引号强制规则
|
4 months ago |
韩天峰
|
8d84671c57
|
refactor(php): 更新布尔值常量定义
- 将 VALUE_FALSE 从 php::false_value 修改为 php::false_
- 将 VALUE_TRUE 从 php::true_value 修改为 php::true_
|
4 months ago |
韩天峰
|
7ad7657e28
|
cs-fix
|
4 months ago |
韩天峰
|
4470c4597d
|
fix(std): 修复标准数组布尔值比较问题
- 添加了测试用例验证浮点数和布尔数组的功能
- 实现了标量布尔值检测方法 isScalarBool
- 添加了布尔值获取方法 getBoolValue
- 定义了 VALUE_FALSE 和 VALUE_TRUE 常量
- 实现了 parseCompareExpr 方法处理布尔值比较
- 修改相等和不等操作符解析使用新的比较表达式解析
- 重构了相同操作符解析逻辑并移除了重复代码
|
4 months ago |