韩天峰
|
3c63ff2cfd
|
feat(stub): 优化常量表达式打印逻辑
- 添加对常量表达式类型的支持
- 实现整数常量的类型后缀处理
- 添加对PHP_INT_MIN和PHP_INT_MAX的特殊处理
- 保留原有表达式打印功能的兼容性
- 提升代码的可读性和维护性
|
7 months ago |
韩天峰
|
625604d375
|
refactor(php): 优化编译器基础类中的变量赋值和数组维度获取逻辑
- 简化 Expr_Assign 和 Expr_AssignRef 的返回逻辑
- 在 checkVarFn 回调函数中添加对 isVarExpr 的检查以确保变量存在
- 移除 parseAssign 函数中关于数组维度获取和静态属性获取的特殊处理逻辑
- 在 parseArrayDimFetch 方法中添加对未定义变量的错误检查
- 添加对全局常量的处理支持
- 更新主函数中的全局变量声明以包含 definedConstants
- 在启动时初始化 definedConstants 变量
|
7 months ago |
韩天峰
|
b57ff37b18
|
refactor(php): 重构PHP编译器中的静态属性赋值解析逻辑
- 将静态属性赋值解析提取为独立的parseAssignStaticProperty方法
- 修改parseAssign方法以使用新的辅助方法进行静态属性检查
- 添加函数定义存在性验证以避免未定义函数的致命错误
- 使用独立的函数名存在性检查替代直接数组访问
- 改进了代码结构和可读性
|
7 months ago |
韩天峰
|
2963e0b4ad
|
refactor(Php): 优化函数调用解析器并重构测试代码
- 引入 getArg 函数简化参数解析逻辑
- 为 abs、ord、chr 和 array_key_exists 函数添加优化支持
- 激活 micro_bench.php 中被注释的性能测试用例
- 为 LeetCode 示例文件添加 main 函数结构
- 在单词接龙算法中改进条件判断的可读性
- 移除 PHP 标签并优化二叉树遍历的条件表达式
|
7 months ago |
韩天峰
|
1596c58da6
|
refactor(Php): 重构编译器基础类和类定义结构
- 移除 ClassDef.php 中的多余空行
- 将 isSuperGlobal 方法从 CompilerBase.php 的中间位置移动到文件末尾附近
- 统一注释中的引号格式,使用单引号替代双引号
- 改进 parseExit 方法,添加对空表达式的处理逻辑
- 优化 findNativeMethod 方法的参数类型声明
- 添加方法调用时参数数量的验证检查,确保符合函数定义要求
|
7 months ago |
韩天峰
|
c58a85baa2
|
fix(stub): 修复常量生成中的表达式类型检查问题
- 添加了对非标量字符串表达式的类型验证
- 修复了常量类型未实现时的错误消息显示
- 统一使用 String_ 类型检查替代完整命名空间
- 将 shell_exec 替换为 passthru 以获取编译返回状态
- 添加编译失败时的错误提示机制
|
7 months ago |
韩天峰
|
57e1790639
|
feat(compiler): 实现对静态属性和常量的原生支持
- 添加 hasConstant、getMethod 和 getConstant 方法到 ClassDef 类
- 在 CompilerBase 中实现静态属性和常量的原生解析功能
- 添加 parseNativeStaticPropertyFetch 和 findNativeStaticProperty 方法
- 修改 getFuncPtr 方法以支持宏参数
- 实现对类常量和静态属性的直接访问优化
- 添加对后置操作符中属性获取的支持
- 更新 examples/micro_bench.php 测试用例以验证功能
- 在 PropertyDef 中添加 isStatic 方法判断静态属性
- 重构预处理器对常量定义的处理逻辑
|
7 months ago |
韩天峰
|
08635302b6
|
refactor(php): 优化函数调用优化器中的function_exists处理
- 移除CompilerBase.php中多余的空行
- 重构FuncCallOptimizer.php中的function_exists逻辑,支持字符串字面量的大小写转换和转义处理
- 在function_exists调用中添加严格模式参数支持
- 更新micro_bench.php中的代码格式和测试执行逻辑
- 激活之前被注释掉的性能测试用例
|
7 months ago |
韩天峰
|
6dd8d2d6bc
|
refactor(Php): 优化字符串字面量处理和函数调用优化
- 提取字符串字面量处理逻辑到独立方法 getLiteralString
- 将 C++ 接口参数类型从 const char* 改为 const php::String&
- 修改字面量字符串数组类型从 php::Var 为 php::Str
- 添加 function_exists 函数调用的优化处理
- 更新头文件中的函数声明和内联函数参数类型
- 调整示例代码中的性能测试部分注释状态
|
7 months ago |
韩天峰
|
5b44e4d390
|
feat(extension): 添加请求生命周期钩子函数支持
- 在扩展模板中添加 PHP_RINIT 和 PHP_RSHUTDOWN 函数实现
- 配置模块入口结构以启用请求初始化和关闭回调
- 更新主程序初始化逻辑以使用模块生命周期函数
- 实现请求启动和关闭时的应用程序初始化清理功能
- 解决 PHP 内部字符串处理的双释放问题
- 简化示例代码以演示全局变量访问功能
|
7 months ago |
韩天峰
|
6632629f58
|
feat(extension): 添加请求生命周期钩子函数支持
- 在扩展模板中添加 PHP_RINIT 和 PHP_RSHUTDOWN 函数实现
- 配置模块入口结构以启用请求初始化和关闭回调
- 更新主程序初始化逻辑以使用模块生命周期函数
- 实现请求启动和关闭时的应用程序初始化清理功能
- 解决 PHP 内部字符串处理的双释放问题
- 简化示例代码以演示全局变量访问功能
|
7 months ago |
韩天峰
|
38110f67d5
|
refactor(php): 重构PHP到C++编译器实现细节
- 更新PHP CS Fixer配置中的类属性分离规则
- 简化ArgInfo、ClassDef、ClassLikeDef等数据结构定义
- 重命名CLASS_ENTRY_MAP为CLASS_MAP并更新相关引用
- 移除多余变量声明并优化全局变量处理逻辑
- 实现超级全局变量检测和初始化功能
- 添加对$GLOBALS数组访问的支持
- 优化函数调用代码生成逻辑
- 添加全局变量测试用例验证功能
- 清理无用常量和变量声明简化代码结构
|
7 months ago |
韩天峰
|
2c90437a99
|
style(coding-standard): 移除严格类型声明并调整代码格式
- 将 .php-cs-fixer.dist.php 中的 declare_strict_types 设置为 false
- 从所有 PHP 类文件中移除 declare(strict_types=1) 声明
- 在 CompilerBase.php 中添加缺失的空行以改善代码可读性
- 恢复 Translator.php 中关于 noLiteralStrings 的原始配置逻辑
|
7 months ago |
韩天峰
|
0e4a332519
|
feat(php): 添加函数指针映射功能支持
- 新增 FUNC_MAP 常量用于存储函数映射
- 添加 funcIndex 和 funcMap 属性用于函数索引管理
- 实现 getFuncPtr 方法获取函数指针
- 修改函数调用逻辑使用新的函数指针机制
- 在扩展模板中添加函数映射数组声明
- 添加 php_get_func 外部函数声明和实现
- 更新翻译器生成相应的外部函数声明
|
7 months ago |
韩天峰
|
100f2e22cb
|
代码格式化,命名空间处理
|
7 months ago |
韩天峰
|
13a5849584
|
代码格式化,命名空间处理
|
7 months ago |
韩天峰
|
8c20fd18c8
|
refactor(core): 优化代码结构和性能
- 调整 import 语句顺序,将 Node 相关引入规范化
- 规范化字符串拼接操作,统一使用点号连接
- 统一比较运算符写法,调整变量与常量的比较顺序
- 移除多余空行和分号,精简代码结构
- 标准化缩进和代码格式,提升可读性
- 优化循环和条件判断逻辑,使用前置递增递减
- 修复类定义和方法定义的格式一致性
- 更新依赖管理方式,优化编译器配置加载
|
7 months ago |
韩天峰
|
1c074d140e
|
feat(php): 实现PHP右结合赋值操作符支持
- 添加isArrayDimFetch方法用于检查数组维度获取表达式
- 实现parseRightAssociativeAssign方法处理右结合赋值链
- 重构parseAssign方法以支持嵌套赋值表达式解析
- 更新parseArrayDimStore方法处理空维度读取错误
- 添加右结合赋值功能的测试用例和示例文件
|
7 months ago |
韩天峰
|
9465caea14
|
feat(php): 添加属性访问控制和对象类型检查功能
- 在 ClassDef 中添加 hasProperty 和 getProperty 方法用于属性访问
- 在 CompilerBase 中添加 isTypedObject 方法检查对象类型
- 将 offsetGetIndirect 替换为 item 方法统一访问接口
- 实现 getPropertyIdentifier 方法支持属性标识符解析
- 添加对私有/受保护属性访问权限的检查和错误处理
- 将 getPropertyIndirect 替换为 attr 方法进行属性访问
- 添加属性引用访问支持通过 attrRef 方法实现
- 更新 identifierToStr 参数类型为 NodeAbstract
- 在 PropertyDef 中添加访问修饰符检查方法(isPrivate/isProtected/isPublic)
- 添加属性引用测试用例验证功能正确性
|
7 months ago |
韩天峰
|
04fdbcc0e4
|
feat(php): 添加类构造函数需求检查和数组属性默认值处理
- 在 ClassDef 中添加 requireCtor 属性用于标记是否需要构造函数
- 简化数组类型默认值的生成逻辑,使用 ZVAL_EMPTY_ARRAY 替代复杂的临时变量处理
- 添加构造函数需求检查,在类使用非空数组作为属性默认值时验证构造函数存在性
- 在构造函数中初始化数组类型的属性默认值到对象属性
- 检测表达式数组类型并设置类构造函数需求标志
|
7 months ago |
韩天峰
|
1fa3b4596b
|
fix(compiler): 修复异常处理机制和二进制文件命名问题
- 将 zend_try/zend_catch/zend_end_try 替换为标准的 try/catch 语法
- 移除旧的 throw_exception 函数并实现新的异常抛出机制
- 修改主函数中的异常处理逻辑以使用新的异常捕获方式
- 修复二进制文件名中连字符被替换为下划线的问题
- 更新异常处理流程以正确捕获和显示错误信息
|
7 months ago |
韩天峰
|
8d8cb358d5
|
feat(php): 添加对 $$ 语法的检测和错误提示
- 在变量表达式解析过程中添加对象类型检查
- 当遇到 $$ 语法时触发致命错误提示
- 阻止不支持的变量变量语法继续执行
- 提供明确的错误信息帮助开发者识别问题
|
7 months ago |
韩天峰
|
96ecb8aae0
|
feat(php): 支持联合类型并优化编译器状态管理
- 添加 UnionType 支持以处理 PHP 联合类型语法
- 实现 resetClass 和 resetFunction 方法来重置编译器状态
- 在适当位置调用状态重置方法确保编译器状态一致性
- 修复类方法定义中的访问修饰符处理逻辑
- 更新示例文件以演示联合类型功能
- 调整项目配置文件中的源码路径设置
|
7 months ago |
韩天峰
|
1a8082ce2f
|
fix(build): 修复源文件路径解析和编译选项配置问题
- 修复相对路径和绝对路径的处理逻辑
- 添加对不存在源文件的错误检查和提示
- 支持 cxxflags 和 ldflags 配置为数组格式
- 改进路径规范化和文件存在性验证
|
7 months ago |
韩天峰
|
8cf58ebf70
|
feat(build): 支持项目配置文件中定义源文件路径
- 添加 sources 字段支持在 project.yml 中指定源文件
- 实现相对路径转换为绝对路径的功能
- 支持单个文件和目录的混合配置
- 优化文件列表生成逻辑
- 修复源文件路径解析问题
- 更新项目构建流程以使用新配置格式
|
7 months ago |
韩天峰
|
09af173013
|
feat(compiler): 添加项目配置文件支持和编译选项扩展
- 在 CompilerBase 中新增 cxxflags 和 ldflags 属性用于编译选项配置
- 集成 symfony/yaml 依赖以支持 YAML 配置文件解析
- 实现 project.yml 配置文件格式用于定义项目构建参数
- 添加 parseProjectYaml 方法解析 YAML 配置并设置编译标志
- 修改 getFiles 方法以支持目录扫描和 YAML 配置文件处理
- 更新 composer.json 和 composer.lock 文件添加新依赖项
|
7 months ago |
韩天峰
|
1fc07ee729
|
feat(compiler): 添加对mixed类型支持和优化函数调用解析
- 在解析函数声明时调整了返回类型检查逻辑,先验证类型存在性再进行类型转换
- 新增对mixed类型的参数类型解析,映射到TYPE_VAR类型
- 添加对resource类型的错误处理机制
- 将原parseCallArgs方法替换为专门的parseNativeCallArgs方法用于本地函数调用
- 在C++主程序中添加php::request_init()初始化调用
- 新增埃拉托斯特尼筛法求素数示例程序及对应的vector扩展实现
- 添加vector.stub.php存根文件定义vector相关函数接口
|
7 months ago |
韩天峰
|
6878ecc517
|
refactor(php): 更新数组维度获取方法以支持写入操作标识
- 修改 parseArrayDimFetch 方法签名以接受写入布尔参数
- 在 offsetGetIndirect 调用中传递写入操作标识
- 为数组维度访问增加赋值表达式上下文支持
|
7 months ago |
韩天峰
|
3bd95121de
|
refactor(php): 优化编译器中的返回值类型处理和赋值操作解析
- 当函数存在多种返回值类型时统一修改为 var 类型表示 any
- 重构位移和异或赋值操作的解析逻辑,使用通用的 parseAssignOp 方法
- 简化代码结构,提高类型判断和表达式转换的一致性
|
7 months ago |
韩天峰
|
c7c375019d
|
refactor(compiler): 重构编译器配置和代码逻辑
- 将命令行参数配置提取到独立的配置文件 compiler_options.php
- 添加新的调试选项包括 debug-line 和 force 参数
- 替换 var_dump 为 symfony/var-dumper 的 dump 函数
- 优化赋值表达式处理逻辑,改进 inAssignExpr 状态管理
- 修复返回语句中间接引用可能导致的内存安全问题
- 添加临时变量确保返回值的内存安全
- 重构属性访问解析方法,传入赋值状态参数
- 更新 composer 依赖,添加 symfony/var-dumper 支持
- 移除调试相关的 var_dump 输出语句
- 优化数组维度获取和属性访问的解析流程
|
7 months ago |
韩天峰
|
3931d77ceb
|
fix(php): 修复PHP嵌入模式下的模块注册和字符串释放问题
- 在模块注册失败时返回错误码255而不是继续执行
- 在模块启动失败时返回错误码255而不是继续执行
- 添加注释解释PHP内部字符串处理的bug
- 在请求关闭时手动从模块表中删除内部字符串以防止重复释放
- 防止use-after-free内存安全问题的发生
|
7 months ago |
韩天峰
|
0d5d91ec02
|
fix(runtime): 解决模块注册表清理问题
|
7 months ago |
韩天峰
|
cf5e889a75
|
refactor(php): 重构PHP编译器函数声明解析和包装生成逻辑
- 修改parseFunctionDeclaration方法移除name参数,直接从节点获取函数名
- 修复错误消息中的变量引用,使用$v->name替代传入的$name参数
- 统一FunctionDef创建时的名称解析,使用parseIdentifier处理节点名称
- 更新parseFunctionDeclaration调用处,传递节点对象而非名称字符串
- 重命名genMethodWrapper为genWrapperFunctionArgs并重构参数处理逻辑
- 添加对方法和函数的不同参数处理逻辑,区分是否包含this_参数
- 重构genMethodWrapper方法以复用新的genWrapperFunctionArgs功能
- 在Constants.php中添加char关键字到保留字列表
|
7 months ago |
韩天峰
|
d3360d2f38
|
fix(php): 修复数组类型返回和include表达式处理
- 将 Expr_Array 的类型返回从 'php::Array' 改为 self::TYPE_ARRAY
- 将字符串 'array' 的类型映射从 'php::Array' 改为 self::TYPE_ARRAY
- 更新 parseInclude 方法参数类型为 Node\Expr\Include_
- 添加对不同 include 类型 (include, require, include_once, require_once) 的支持
- 在 include 表达式中传递正确的类型参数
- 添加 include 测试用例和相关测试文件
|
7 months ago |
韩天峰
|
f38098523f
|
refactor(compiler): 重构PHP编译器参数类型解析逻辑
- 移除未使用的 $varTypes 属性
- 将 parseType 方法重命名为 parseParameterType 并添加参数支持
- 修复 void 类型作为参数类型的错误处理
- 更新模块注册方式从临时模块到持久模块
- 添加目标名称中特殊字符的替换处理
- 为参数类型解析添加更准确的对象类型映射
|
7 months ago |
韩天峰
|
11828d3b5a
|
feat(compiler): 添加对 any 函数的支持
- 在编译器中实现 any 函数的解析和处理逻辑
- 添加对 var 类型常量的支持
- 扩展测试用例以验证 any 函数的功能
|
7 months ago |
韩天峰
|
37d0172164
|
```
refactor(build): 优化编译链接逻辑并更新错误检查方式
- 修改 parseLibs 方法,根据构建模式动态添加 php 库依赖
- 将链接命令中的库解析移到条件判断内部,避免不必要的参数传递
- 添加新的 AST 转储脚本用于调试目的
- 更新弃用警告处理,在 gen_stub.php 中屏蔽 E_DEPRECATED 错误
- 修复 Translator 中的链接命令构造,移除重复的库解析调用
- 改进 arginfo 头文件生成的输出验证逻辑,使用 str_contains 替代 str_starts_with
```
|
7 months ago |
韩天峰
|
a6a06ca859
|
feat(translator): 增强PHP到C++编译器功能
- 在ClassLikeDef中添加getNamespacedName方法的symbolic参数支持
- 简化compiler.php中的文件扫描逻辑并移除冗余代码
- 在CompilerBase中添加函数定义存储数组和相关属性
- 更新错误处理方法结构并分离基本错误和致命错误处理
- 在extension.cc模板中移除类信息函数声明并添加函数入口表
- 修改属性偏移获取逻辑以支持非符号化命名空间
- 添加嵌入式模块获取函数实现
- 重构gen_stub.php中的类和函数信息生成逻辑
- 移除全局变量genClass并更新命令行选项处理
- 重命名examples/class/test.php为examples/appx/test.php并添加测试常量和函数
- 在Translator中添加PHP源文件和arginfo头文件数组管理
- 更新目标名称验证以检查C++保留关键字
- 实现getFiles方法统一文件路径处理逻辑
- 添加函数包装器生成功能和类注册函数提取
- 优化类CE列表生成逻辑并修复头文件包含顺序问题
- 重构存根文件生成流程并改进错误报告机制
|
7 months ago |
韩天峰
|
ea77b6d746
|
feat(compiler): 添加编译模式支持和目标名称配置
- 实现二进制文件和PHP扩展两种编译模式
- 添加目标名称配置功能
- 支持通过命令行参数指定编译模式
- 更新编译选项以支持不同的构建模式
- 添加main函数存在性检查确保二进制构建完整性
- 修改链接过程以支持共享库生成
- 添加示例文件array_append.php和ref.php用于测试
- 更新帮助文档和命令行参数说明
|
7 months ago |
韩天峰
|
d1c56ee5d1
|
fix(php): 修复赋值表达式作为右值时的解析错误
- 添加了对 Expr_Assign 和 Expr_AssignRef 节点类型的处理
- 验证赋值表达式的变量部分是否为有效变量表达式
- 当赋值表达式作为右值使用时确保其为变量赋值
- 添加了相应的错误提示信息
|
7 months ago |
韩天峰
|
e824c5d7c0
|
fix(compiler): 修复变量赋值和属性访问的类型检查问题
- 添加了对属性赋值操作的类型检测支持
- 实现了模运算符的类型安全处理
- 添加了布尔值转义函数 escapeBool
- 修改 parsePropertyFetch 方法以支持赋值操作标识
- 优化 foreach 循环中的变量检查逻辑
- 添加引用赋值的类型验证
- 将 writeFile 方法改为公有以便外部调用
- 添加 checkVar 方法进行变量类型安全检查
- 更新测试文件中的变量命名以避免冲突
- 修复对象链接测试中的属性访问问题
|
7 months ago |
韩天峰
|
9499aac142
|
refactor(php): 更新PHP编译器中的类型转换函数命名
- 将php::to_int重命名为php::toInt以符合驼峰命名规范
- 将php::to_float重命名为php::toFloat以符合驼峰命名规范
- 将php::to_string重命名为php::toString以符合驼峰命名规范
- 将php::to_object重命名为php::toObject以符合驼峰命名规范
- 将php::to_array重命名为php::toArray以符合驼峰命名规范
- 将php::to_bool重命名为php::toBool以符合驼峰命名规范
- 移除examples/ns.cc文件中的测试代码
|
7 months ago |
韩天峰
|
58f9cb4c28
|
fix(php): 修复PHP引用类型处理问题
- 将TYPE_REF常量值从'php::Var'更改为'php::Ref'
- 修改引用参数传递逻辑,使用'&'操作符而不是解引用
- 将post-increment操作符错误处理从parsePostOp改为fatalError
- 修复变量赋值时的引用处理逻辑
- 添加引用操作符测试用例
|
7 months ago |
韩天峰
|
a529ccf306
|
fix(php): 修复对象值解析和函数参数处理问题
- 修复了对象值解析时未正确解析标识符的问题
- 为 FunctionDef 类的 argInfoList 属性添加了 PHPDoc 注释
- 在示例文件中添加了测试函数来验证参数处理功能
- 实现了对带默认值参数的正确处理逻辑
|
7 months ago |
韩天峰
|
abb5dbc6d8
|
fix(php): 修复后置递增递减操作符解析问题
- 使用 str_repeat($op, 2) 正确生成后置操作符代码
- 修复非变量表达式的错误处理逻辑
- 添加后置递增递减操作符的测试用例
|
7 months ago |
韩天峰
|
51f039e6b4
|
refactor(Php): 优化对象值解析逻辑并添加方法标识支持
- 简化 CompilerBase.php 中的对象值解析条件判断
- 在 FunctionDef.php 中添加 method 属性用于标识是否为方法
- 在 MethodDef.php 构造函数中设置 functionDef 的 method 标志
- 在 Translator.php 参数列表生成时为方法添加 this_ 对象参数
|
7 months ago |
韩天峰
|
9b94b287cb
|
refactor(php): 移除属性赋值解析方法并优化对象初始化
- 删除了 Expr_PropertyFetch 类型的属性赋值解析逻辑
- 在 Test 类中添加构造函数以简化对象初始化
- 更新示例代码使用构造函数进行对象创建和属性赋值
|
7 months ago |
韩天峰
|
f8be1767e6
|
feat(php): 添加对象类型推断和方法调用优化功能
- 新增 isNewExpr、isNameExpr、isScalarString、isFuncCallExpr 等 AST 节点类型判断方法
- 移除 PROPERTY_OFFSETS 常量并优化变量声明结构
- 添加 objects 属性用于存储变量对应的对象类型信息
- 实现对象创建和函数调用时的类型推断逻辑
- 扩展 convertObjectExpr 方法支持指定类名参数
- 重构原生方法调用检查逻辑,实现更精确的方法查找机制
- 添加访问权限检查功能确保私有方法不被外部调用
- 优化 FuncCallOptimizer 支持 strval 和 objval 函数转换
- 添加示例文件展示对象操作功能
|
7 months ago |
韩天峰
|
0f3ccb98cd
|
feat(php): 添加属性偏移量支持和性能优化
- 引入 Node 类型导入并添加 isIdExpr 方法用于标识符检查
- 新增 PROPERTY_OFFSETS 常量和 getPropertyOffset 方法用于属性偏移量计算
- 重构命名空间相关方法,统一使用 getNativeName 替代 getNativeFunctionName
- 优化属性获取逻辑,在特定条件下使用属性偏移量提升性能
- 在模板中生成属性偏移量声明和初始化代码
- 添加性能测试脚本 prof.php 和性能分析配置调整
|
7 months ago |
韩天峰
|
91a607185e
|
refactor(php): 提取函数调用优化逻辑到独立trait
- 将函数调用优化代码从CompilerBase类中提取到FuncCallOptimizer trait
- 在CompilerBase中引入FuncCallOptimizer trait
- 使用parseFuncCallWithOptimizer方法替代原有的硬编码优化逻辑
- 添加对abs函数的优化支持
- 简化了原有条件判断结构,提高代码可维护性
|
7 months ago |