韩天峰
|
2481eebd0c
|
fix(php): 修正整数类型后缀逻辑判断
- 修复了在不同操作系统下整数类型后缀的判断逻辑
- 将原来的 isMacos 判断改为 isLinux 判断
- 确保在 Linux 系统下使用 'L' 后缀,在其他系统使用 'LL' 后缀
|
4 months ago |
韩天峰
|
f266e6ec62
|
fix(php): 修复 Windows 编译链接错误
- 替换 ws2_32.lib 等库为 msvcrt.lib、kernel32.lib 等完整的 CRT 和系统库
- 添加 oldnames.lib、gdi32.lib、winspool.lib 等必要的 Windows API 库
- 保留 ws2_32.lib 并添加 uuid.lib、odbc32.lib 等数据库相关库
- 为编译器添加 /MD 参数以使用动态多线程 CRT
- 移除 ZEND_ENABLE_STATIC_TSRMLS_CACHE 宏定义以避免静态缓存冲突
|
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 |
韩天峰
|
be77cfaab1
|
feat(compiler): 增强 PHP 编译器对 Windows 平台和 ZTS 版本的支持
- 检测 PHP 是否为线程安全版本(ZTS)并相应配置编译选项
- 添加 PHPX_HOME 环境变量支持用于自定义 phpx 目录
- 优化 Windows 平台下 PHP 路径检测逻辑,支持从 SDK/include 目录读取头文件
- 实现 Windows 平台下 PHP 库文件的多路径查找策略(SDK/lib, lib, 根目录)
- 添加 Windows 编译时必需的宏定义(ZEND_WIN32, PHP_WIN32, ZTS 等)
- 修复跨平台路径分隔符处理问题,统一 Windows 使用反斜杠
- 增强错误处理和用户提示信息
- 新增 Preprocessor 类用于源文件预处理和依赖分析
|
4 months ago |
韩天峰
|
69886abb5d
|
feat(build): 添加 Windows 平台编译支持
- 实现了 Windows 平台检测和 MSVC 编译器配置
- 添加了 Windows 特定的包含路径和链接库处理
- 实现了 Windows 和 Unix 平台的条件编译选项
- 适配了 Windows 文件路径分隔符和文件扩展名
- 添加了 Windows 下 PHP 目录检测逻辑
- 在 Windows 平台下跳过 clang-format 格式化步骤
|
4 months ago |
韩天峰
|
7f260f3d52
|
fix(php): 修复整数类型在macOS平台的后缀处理
- 根据平台类型动态选择整数后缀,macOS使用LL,其他平台使用L
- 解决了跨平台编译时整数类型不一致的问题
|
4 months ago |
韩天峰
|
c87d750ef3
|
refactor(php): 重构PHP目录获取逻辑以支持macOS编译
- 提取php-config路径获取为公共方法getPhpDir()
- 移除Translator类中的重复代码
- 为macOS平台添加rpath绝对路径配置
- 修复macOS环境下ldconfig缺失导致的链接问题
|
4 months ago |
韩天峰
|
10ab3d44a7
|
feat(php): 添加C++标准版本配置选项
- 引入cxxStd属性,默认设置为c++14标准
- 在编译命令中自动添加-std参数
- 避免重复添加标准参数的逻辑检查
- 支持自定义C++编译标准版本配置
|
4 months ago |
韩天峰
|
0fb8957fc7
|
fix(core): 修复编译器基础类构造函数调用并添加操作系统类型检测支持
- 在 CompilerBase 构造函数中添加对父类构造函数的调用
- 为 Translator 类添加 osType 属性和相关平台检测方法
- 根据操作系统类型动态确定 PHP 扩展库文件后缀名
- 实现对 macOS (.dylib) 和 Linux/Windows (.so) 平台的库文件兼容性支持
|
4 months ago |
韩天峰
|
70d06eeb2b
|
cs-fix
|
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 |
韩天峰
|
7519c3c523
|
feat(php): 添加PHP版本兼容性检查和函数命名空间处理
- 添加PHP版本检查确保8.2.0以上且低于8.6.0
- 使用指定PHP版本创建解析器而不是最新支持版本
- 新增getNamespacedFuncName方法处理函数名的命名空间补齐
- 为动态函数调用添加命名空间全限定名称转换
- 导入PhpVersion类用于版本处理
|
4 months ago |
韩天峰
|
608db0e8c2
|
fix(php): 修复引用参数传递和模块命名问题
- 添加标量值作为引用参数时的错误检查
- 为动态调用类添加占位符处理
- 统一模块名称前缀为 app_
- 简化模块名称生成逻辑
- 添加动态调用测试用例
|
4 months ago |
韩天峰
|
0293b28148
|
feat(compiler): 添加环境变量支持并优化打包流程
- 在编译器中添加 _ENV 全局变量数组支持
- 更新示例程序以演示环境变量访问功能
- 新增 package.sh 脚本实现自动化打包流程
- 集成 UPX 压缩优化二进制文件大小
- 完善打包脚本中的文件检查和错误处理机制
|
4 months ago |
韩天峰
|
db3dc030f0
|
fix(php): 修复代码格式化和常量定义问题
- 将 $formatCode 默认值从 false 修改为 true 以启用代码格式化
- 在 README.md 中添加预览版系统兼容性说明
- 修复 README.md 中编译命令的路径描述错误
- 修复常量定义时 genCharPtr 方法调用参数缺失问题
|
4 months ago |
韩天峰
|
d78a43099d
|
refactor(php): 重构 PHP 编译器基础类以使用 phpx 库
- 移除硬编码的 phpx 目录路径,改用动态获取方法
- 将 phpx 目录设置方法从公共改为受保护,并返回 vendor 中的 phpx 路径
- 更新 include 和 lib 目录路径为从 phpx 库动态获取
- 在 composer.json 中添加 swoole/phpx 依赖
- 添加构建前检查 php-config 和必要库文件的验证逻辑
- 更新源文件路径为从 phpx 库目录中获取
- 为 debug-info 参数添加默认值配置
|
4 months ago |
韩天峰
|
ccfef0f2b6
|
fix(cli): 修复命令行参数处理和调试选项配置
- 将命令行参数验证移到路径设置之前
- 添加 translator 的 showUsage() 方法调用
- 默认关闭 debugInfo、formatCode 和 printBacktraceOnError
- 在编译命令中条件性添加 -g 参数
- 仅在启用格式化时运行 clang-format
- 更新帮助信息显示动态命令名称
- 添加 -d, --debug-info 选项支持
- 将 -v 选项从 verbose 改为显示版本
- 改进错误处理使用 translator 的 error 方法
|
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 |
韩天峰
|
2912b40b0f
|
feat(compiler): 添加原生类型支持和属性获取功能
- 在编译器基础类中添加了 Expr_PropertyFetch 表达式处理逻辑
- 实现了原生属性变量检测和类型推断功能
- 新增了属性获取表达式的原生属性变量标记机制
- 更新了多个示例文件以使用 native_types 命名空间
- 添加了默认数组属性测试用例验证功能
- 集成了 polyfills 支持并在主入口点传递命令行参数
|
4 months ago |
韩天峰
|
c86059217d
|
feat(compiler): 优化对象属性访问性能
- 引入 PropertyDef 实体类来管理属性定义
- 添加 OBJECT_PROP 常量用于标识对象属性
- 修复 findNativeProperty 方法中的参数传递问题
- 实现 native 属性类型的引用优化,提升 this_ 对象的属性访问性能
- 为整型和浮点型属性创建直接引用访问机制
- 改进属性查找逻辑,支持 nativePropertyDef 和 nativeClassDef 属性
- 在编译代码中添加对象属性引用声明,优化运行时性能
- 添加测试用例验证默认数组属性功能
|
4 months ago |
韩天峰
|
12ff420d87
|
refactor(config): 将编译器选项配置迁移至常量类
- 移除独立的 compiler_options.php 配置文件
- 将编译器选项定义移至 Php/Constants.php 中的 COMPILER_OPTIONS 常量
- 更新 CompilerBase.php 中的 getNamespacedClassName 调用方式
- 修改 Constants.php 中的 UNSUPPORTED_FUNCTIONS 为数组类型
- 更新 Translator.php 中配置加载方式,使用 Constants::COMPILER_OPTIONS 替代 require
- 添加 objval 函数的相关测试用例
|
4 months ago |
韩天峰
|
5bf12a10ed
|
feat(php): 添加对 trait 魔术常量 __TRAIT__ 的支持
- 在 CompilerBase 中添加 Scalar_MagicConst_Trait 的解析支持
- 为 __TRAIT__ 常量实现作用域检查逻辑
- 为 __CLASS__ 常量添加 trait 环境下的返回逻辑
- 在 Preprocessor 中添加类属性钩子不支持的错误提示
- 添加 trait 魔术常量的功能测试用例
- 更新 trait 示例代码以展示魔术常量使用
|
4 months ago |
韩天峰
|
ffdf4c6653
|
fix(traits): 解决trait中方法参数类型解析问题
- 添加trait注入class时使用完整类名的处理逻辑
- 重构参数类型解析逻辑,统一使用parseTypeDecl方法
- 修复void/never类型作为参数类型的错误检查
- 简化类型判断和类名获取流程
- 添加测试用例验证trait方法冲突处理
|
4 months ago |
韩天峰
|
799aa629c0
|
feat(php): 添加 refval 函数支持引用传递功能
- 新增 isRefvalCall 方法检测 refval 函数调用
- 在编译器中添加对 refval 函数的特殊处理逻辑
- 实现 refval 函数调用的参数解析和优化
- 添加 refval 函数的 polyfill 实现
- 在 stub 生成中使用 refval 包装声明字符串
- 添加 refval 函数的测试用例
|
4 months ago |
韩天峰
|
05854e55be
|
refactor(php): 重构PHP编译器中的引用参数处理逻辑
- 将引用参数处理逻辑提取到独立的parseArgRefVar方法中
- 简化了Scalar_String类型处理时的genCharPtr调用
- 添加了对refval函数的支持,允许通过函数调用传递引用参数
- 移除了重复的引用参数处理代码,提高代码复用性
- 修复了eval函数中使用的identifierToStr方法调用
- 添加了refval函数的测试用例
|
4 months ago |
韩天峰
|
c94d7afdba
|
fix(compiler): 修复PHP编译器中的类型检查和表达式解析问题
- 移除不再使用的常量定义 EXPR_VARIABLE、EXPR_NEW、EXPR_ARRAY_DIM_FETCH、EXPR_PROPERTY_FETCH
- 为 parseExpr 方法添加返回类型声明 string
- 将 switch 语句中的常量引用改为直接字符串引用
- 在变量重新赋值时添加对象到数组的类型检查限制
- 禁止对象与数组之间的相互转换
- 修复变量类型检测中的常量引用问题
- 删除未使用的 leftExprType 变量
- 使用 isArrayDimFetch 方法替代类型比较
- 优化布尔取反表达式的解析逻辑
- 添加对 self 和 parent 关键字的支持
- 重构 unset 语句的类型判断逻辑
- 修复 foreach 循环中数组维度获取的判断方式
- 修正 Translator 类中的格式化和类型引用问题
|
4 months ago |
韩天峰
|
5b66ef2161
|
fix(trait): 解决trait中self关键字引用问题
- 在trait中使用self时动态获取类名而不是固定为当前类
- 添加对trait定义的检测逻辑
- 确保trait中的常量访问正确解析
- 修复了method conflict测试用例
- 添加了traits测试文件验证功能正确性
|
4 months ago |
韩天峰
|
2e0cb9db4c
|
refactor(php): 优化匿名类名称解析逻辑
- 添加注释标记匿名类中相对类名转全限定名称的待办事项
- 修复类型声明中的命名空间引用问题
- 统一代码风格以提高可读性
|
4 months ago |
韩天峰
|
1567ad2f88
|
fix(php): 解决匿名类继承父类名称解析问题
- 在编译器中为匿名类继承的父类添加全限定名称转换
- 修复了当匿名类继承使用use导入的类时的名称解析错误
- 添加了对继承类名的命名空间处理逻辑
- 确保匿名类能够正确继承并访问父类方法
|
4 months ago |
韩天峰
|
84b9340998
|
fix(aot): 修复AOT编译中类继承和常量定义相关问题
- 在WorkerA类中添加baz方法用于测试保护方法访问
- 修正isInheritedFrom方法中类名比较逻辑,确保正确的继承检查
- 更新对象实例类名获取方式,使用getFullClassName替代直接访问
- 修复常量定义解析中的多余换行符问题
- 扩展测试用例验证保护方法在不同实例间的调用行为
|
4 months ago |
韩天峰
|
492a1dbd39
|
fix(php): 修复类方法访问权限检查逻辑
- 重构 checkAccessible 方法,正确处理 private 和 protected 方法的访问控制
- 添加对受保护方法的继承关系检查
- 修复当前类内部访问权限判断逻辑
- 优化 findNativeMethod 中的对象方法查找流程
- 添加缺失的返回值处理逻辑
|
4 months ago |
韩天峰
|
78b93ed32c
|
fix(php): 修复函数参数引用类型检查逻辑
- 移除对非引用类型变量的错误检查逻辑
- 简化参数引用转换流程
- 添加PHP 8.0类型声明兼容性测试用例
- 修复当参数为未定义变量时的引用创建机制
|
4 months ago |
韩天峰
|
eaa598a48e
|
fix(php): 解决字符串连接操作符的void类型检查和引用参数处理问题
- 在parseBinaryOpConcat方法中添加了对左右操作数的类型检查,防止void类型的连接操作
- 为concat操作添加了专门的符号函数php::concat
- 修复了引用参数传递时的变量类型验证逻辑
- 更新了常量定义方法的返回类型从string改为void
- 修正了预处理器中函数声明的换行符处理
- 将Iterator方法调用从exec改为call以统一接口调用方式
- 添加了concat_void.php示例文件用于测试void类型连接错误
- 新增了ref相关的测试用例文件
|
4 months ago |
韩天峰
|
ec98d1045d
|
fix(php): 修复异常处理和编译器逻辑问题
- 添加了 try-catch 异常处理的测试用例
- 实现了 isFullNameExpr 方法用于检查完全限定名称表达式
- 修复了编译器中的 break 语句缺失问题
- 重命名了 parseGlobal 方法参数以避免变量冲突
- 优化了 catch 类型检查逻辑,支持类名实例化检查
- 添加了 C++ 关键字到保留字常量列表
- 完善了项目配置文件 project.yml
- 添加了 instanceOf 符号方法
- 修复了多个 switch 语句中的 break 缺失问题
|
4 months ago |
韩天峰
|
ee8c40698b
|
refactor(compiler): 重构标准库函数调用解析逻辑
- 提取 std 函数调用解析为独立方法 parseStdCall
- 简化 CompilerBase 中的类型转换处理逻辑
- 优化 gen_stub 中版本特性合并的实现方式
- 修改 getAllFuncInfos 方法返回值类型为数组合并
- 为 std::int 类型声明测试用例添加新断言
|
4 months ago |
韩天峰
|
17f4d14940
|
feat(php): 添加按位或赋值操作符支持
- 在 CompilerBase.php 中添加 Expr_AssignOp_BitwiseOr 的解析处理
- 实现 parseAssignOpBitwiseOr 方法处理 |= 操作符
- 添加相应的单元测试文件 assignop_bitwiseor.phpt 验证功能
|
4 months ago |
韩天峰
|
26dfc99094
|
feat(aot): 增强类型推断支持接口类型
- 添加接口类型检测功能,实现 hasInterface 方法
- 修改对象赋值逻辑,对接口类型变量进行特殊处理
- 增强返回值类型检查,支持接口类型的动态类型检测
- 更新类继承关系检查,支持接口实现关系验证
- 添加测试用例验证接口类型推断功能
- 修复接口名称存储时的转义问题
- 默认开启错误回溯打印功能便于调试
|
4 months ago |
韩天峰
|
45a4582d03
|
feat(php): 添加错误时打印回溯跟踪的配置选项
- 在 CompilerBase 类中新增 printBacktraceOnError 属性,默认值为 false
- 修改错误处理逻辑,仅在 printBacktraceOnError 为 true 时调用 debug_print_backtrace()
- 保持原有错误消息显示和程序退出功能不变
|
4 months ago |
韩天峰
|
165d683f5a
|
fix(aot): 解决数组键为0时的C++编译歧义问题
- 添加VALUE_ZERO常量用于表示数字0键
- 实现parseArrayKey方法统一处理数组键解析逻辑
- 修复0键在C++中可能产生的空指针与整数二义性错误
- 更新数组测试用例以验证0键正确处理
- 重构数组键处理代码减少重复逻辑
- 添加相关测试文件验证不同数组场景
|
4 months ago |
韩天峰
|
583536a24e
|
fix(php): 修复编译器中的条件判断逻辑错误
- 修正了 isClassConstFetch 条件判断的位置,确保正确的执行流程
- 补全了 DynamicCall 异常捕获后的代码块结构
- 修复了静态方法调用检查中的条件表达式逻辑
- 统一了 Translator 中的 elseif 语法使用规范
|
4 months ago |
韩天峰
|
1fbaa07820
|
fix(aot): 修复静态方法调用中的占位符生成问题
- 将 Symbol::getCalledCe() 替换为 Symbol::getCalledClass() 以正确处理静态方法调用
- 添加了针对 static::bar(...) 语法的测试用例
- 确保继承类中的静态方法调用能够正确解析到子类方法
|
4 months ago |
韩天峰
|
f41d42e5bc
|
feat(compiler): 增强类型声明和对象赋值检查功能
- 添加了 objval() 函数支持 Class::class 常量语法
- 实现了方法调用和静态调用的返回类型推断
- 加强了对象类型赋值检查,要求使用 objval() 进行类型对齐
- 禁止字符串与数组之间的直接转换
- 添加了内部类常量值获取功能
- 更新了测试用例验证类型声明功能
|
4 months ago |
韩天峰
|
e62c953c71
|
feat(compiler): 完善类型声明和对象赋值检查功能
- 将 getNamespacedClassName 方法设为公共方法以便外部调用
- 添加对 self、parent、static 关键字的类型解析支持
- 优化 Name_FullyQualified 节点的解析逻辑
- 实现 detectClassOfExpr 方法用于检测表达式的类类型
- 增强对象赋值时的类型检查和错误提示
- 完善返回值类型的验证机制
- 重构类型检测相关方法的命名和实现
- 添加对 trait 语句的解析支持
- 优化构建模式设置功能
- 增加类型声明相关的测试用例
|
4 months ago |
韩天峰
|
57220d63b9
|
feat(trait): 实现 trait 使用适配器功能支持别名和冲突解决
- 添加 traitAliases 和 traitIgnored 属性到 ClassDef 存储适配器配置
- 实现 trait 方法别名映射功能 (as)
- 实现 trait 方法冲突解决机制 (insteadof)
- 在预处理器中解析 trait use 语句的适配器选项
- 在翻译器中应用 trait 别名和忽略规则
- 添加完整的 trait 冲突测试用例验证功能正确性
|
4 months ago |
韩天峰
|
b8897319cb
|
fix(php): 修复字符串字面量优化导致eval函数执行异常
- 禁用eval函数中PHP代码段的字面量字符串优化
- 添加noLiteralString属性标记避免优化器错误处理
- 修改编译器基类中字符串解析逻辑以支持条件优化控制
|
4 months ago |
韩天峰
|
f4b8d6c1f3
|
feat(php): 添加对 trait 的支持并重构符号引用方式
- 在 ClassDef 中添加 trait 属性标识类是否为 trait
- 新增 Symbol 类统一管理 PHP 符号的生成
- 将编译器中的硬编码符号调用替换为 Symbol 类方法
- 实现 Trait 使用功能,支持将 Trait 中的常量、属性和方法复制到目标类
- 添加对 trait 内属性的动态访问支持
- 重构静态属性访问逻辑以兼容 trait 使用场景
- 移动并优化常量值获取相关方法到 Translator 类
|
4 months ago |
韩天峰
|
d85353f8eb
|
feat(compiler): 实现常量值解析和类型安全的值生成
- 在 ConstantDef 中添加 valueExpr 属性以支持表达式解析
- 将 gen_stub.php 移动到 src 目录并重构为可重用函数
- 实现 getClassConstValue 和 getConstValue 方法处理类常量和全局常量
- 添加 genCValue 工具方法支持不同类型的 C 值生成
- 修改预处理器存储常量表达式节点信息
- 更新编译器基础类 getRelativePath 方法为公共访问
- 优化 stub 文件生成逻辑使用内部函数替代 shell 执行
- 添加错误处理机制替换原有的直接退出方式
|
4 months ago |