韩天峰
|
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 |
韩天峰
|
3f9f87ba7f
|
fix(tests): 修正数组越界测试的期望输出格式
- 移除冗长的数组结构化输出格式
- 简化为直接整数值输出
- 保留数组索引越界的异常信息
- 更新测试断言以匹配实际运行结果
|
4 months ago |
韩天峰
|
805f2a62ee
|
refactor(compiler): 优化标准数组访问的类型检测和表达式解析
- 移除 phpx_std_array.h 头文件引用
- 将表达式解析提取为独立变量以提高可读性
- 添加标准数组维度获取的属性缓存机制
- 实现完整的数组维度访问层级检测
- 修复参数传递中的数组转换逻辑
- 优化嵌套数组访问的解析流程
|
4 months ago |
韩天峰
|
36be831b83
|
feat(php): 添加标准数组赋值解析支持
- 在 CompilerBase 中添加标准数组表达式检查和解析逻辑
- 引入 NodeAbstract 依赖以支持节点抽象操作
- 实现 parseStdArrayAssign 方法处理标准数组赋值操作
- 添加数组维度获取和类型转换功能
- 确保字符串类型无法使用 [] 操作符的错误检查仍然有效
|
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 |
韩天峰
|
98ca30764a
|
refactor(polyfills): 移除 php::Var 类型常量
- 删除了 type_any 常量定义
- 清理了相关类型声明代码
|
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 |
韩天峰
|
436e09f6ae
|
chore(deps): 更新 swoole/phpx 依赖版本
- 将 swoole/phpx 从 ~2.1.3 更新到 ~2.1.5
- 添加动态调用方法测试用例 method-002.phpt
- 新增命名参数调用功能的测试验证
- 添加对象动态方法调用的相关测试代码
|
4 months ago |
韩天峰
|
2c041ab8e1
|
fix(php): 修复PHP翻译器代码生成问题
- 为extern "C"块添加缺失的换行符
- 移除未使用的objectFiles变量声明
|
4 months ago |
韩天峰
|
81957f56d7
|
feat(php): 更新符号常量并添加参数列表支持
- 在Symbol类中添加argList方法返回'php::ArgList'
- 修改CompilerBase中参数列表的返回值格式
- 添加count-array.php示例文件展示数组计数功能
|
4 months ago |
韩天峰
|
c4c46bf3f0
|
feat(compiler): 添加PHP编译器基础类和调试符号支持
- 添加CompilerBase核心编译器类,支持PHP到C++代码转换
- 实现AST节点解析和表达式处理功能
- 添加跨平台编译器检测和配置支持
- 集成PhpParser进行PHP语法树解析
- 实现类型系统和变量管理功能
- 添加调试信息和错误处理机制
- 扩展.gitignore文件以忽略调试符号文件
|
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 |
韩天峰
|
2481eebd0c
|
fix(php): 修正整数类型后缀逻辑判断
- 修复了在不同操作系统下整数类型后缀的判断逻辑
- 将原来的 isMacos 判断改为 isLinux 判断
- 确保在 Linux 系统下使用 'L' 后缀,在其他系统使用 'LL' 后缀
|
4 months ago |