韩天峰
|
ad3bd659b0
|
refactor(template): 重构类常量生成逻辑
- 将类常量生成代码从模板文件移动到 Translator 类中
- 创建 genUpdateClassConstants 方法统一处理数组类型常量生成
- 使用新方法替换原有的 PHP 模板循环结构
- 简化 extension.cc.php 模板中的常量定义代码
- 提高代码可维护性和复用性
|
5 months ago |
韩天峰
|
68a9a782e8
|
feat(extension): 添加类构造器和属性默认值支持
- 在扩展模板中添加类构造器创建对象函数声明
- 实现类构造器中的属性初始化逻辑
- 将静态属性列表重命名为默认静态属性列表
- 添加类属性默认值列表用于存储实例属性初始值
- 更新类信息数组结构添加classDef引用
- 移除构造函数检查逻辑并优化方法包装生成
- 在类包装生成中添加属性默认值处理逻辑
- 添加测试用例验证可空类型属性功能
|
5 months ago |
韩天峰
|
f2647ccbba
|
feat(php): 支持类常量数组类型的编译处理
- 在 CompilerBase.php 中添加对类常量数组类型的判断和处理逻辑
- 在 extension.cc.php 模板中增加类数组常量的声明、初始化和清理代码生成
- 修改 Translator.php 中的类常量解析逻辑以支持类型推断
- 添加对未明确声明类型的类常量进行自动类型检测
- 为类数组常量生成对应的外部变量声明
- 移除不再需要的字面字符串数组外部声明
|
5 months ago |
韩天峰
|
b499347669
|
cs-fix
|
5 months ago |
韩天峰
|
07200b9e12
|
feat(compiler): 支持PHP变长参数函数特性
- 实现变长参数语法解析和编译支持
- 添加变长参数必须位于最后位置的验证逻辑
- 支持变长参数不能通过引用传递的限制检查
- 实现变长参数默认值作为空数组的处理机制
- 添加对变长参数函数调用时参数数量的检查功能
- 支持除法运算符返回类型推断的特殊情况处理
- 优化函数调用参数解析中的变长参数展开逻辑
- 添加多个变长参数函数测试用例覆盖不同场景
|
5 months ago |
韩天峰
|
096a92a62e
|
feat(php): 添加对内部类继承和可空参数的支持
- 在 ArgInfo 类中添加 nullable 属性用于标识参数是否可空
- 在 ClassDef 类中添加 inheritedFromInternalClass 属性用于标记是否继承自内部类
- 实现对继承自内部类的动态方法调用支持
- 添加 Reflection::isInternalClass 方法用于判断类是否为内部类
- 添加 Reflection::hasMethod 方法用于检查类是否存在指定方法
- 在参数解析时设置 nullable 标志
- 修改编译器基类以支持内部类继承的错误处理
- 更新翻译器以正确处理可空参数的调用逻辑
|
5 months ago |
韩天峰
|
86055c3bf1
|
feat(php): 添加PHP类型声明解析功能
- 新增DECL_TYPE_OF_RETURN、DECL_TYPE_OF_PROPERTY、DECL_TYPE_OF_CONST、DECL_TYPE_OF_PARAM常量用于标识类型声明上下文
- 扩展zendTypeMap映射表,支持false、true、never、null、callable、iterable等类型
- 修改parseTypeDecl方法,增加$what参数以区分不同的类型声明场景
- 实现对属性和常量类型声明中void/never类型的验证和错误提示
- 更新函数参数类型解析逻辑,统一使用类型声明解析方法
- 在类常量和属性解析中使用新的类型声明解析方法
|
5 months ago |
韩天峰
|
55caa1fcef
|
feat(compiler): 实现PHP魔术方法支持和动态调用处理
- 添加__call、__invoke、__toString、__debugInfo等魔术方法测试用例
- 添加__callStatic静态魔术方法支持和测试用例
- 在ClassDef中实现方法名称大小写不敏感的查找机制
- 添加DynamicCall异常用于处理动态方法调用场景
- 改进编译器对__call和__callStatic魔术方法的识别和处理
- 优化方法调用流程以支持动态方法分派机制
- 更新方法注册逻辑使用addMethod方法替代直接赋值操作
|
5 months ago |
韩天峰
|
1441a7e5be
|
cs-fix
|
5 months ago |
韩天峰
|
9eb781464a
|
大重构,新增 FunctionContext 类
|
6 months ago |
韩天峰
|
41e46c2479
|
refactor(php): 重构父类解析逻辑以支持完全限定名称
- 添加 getParentClass 方法来处理 NodeAbstract 类型的 extends 参数
- 在 Preprocessor 中使用新的 getParentClass 方法替代直接调用 getNamespacedClassName
- 在 Translator 中使用新的 getParentClass 方法替代直接调用 getNamespacedClassName
- 支持对 FullyQualified 名称类型的正确解析
- 保持对普通名称类型的向后兼容性
|
6 months ago |
韩天峰
|
6d9c3da0c0
|
feat(compiler): 添加并行编译功能支持多任务同时执行
- 将原有逐个编译逻辑替换为统一的 compile 方法
- 新增 job 参数用于控制并行任务数量,默认值为 4
- 实现基于 pcntl_fork 的并行编译机制
- 添加并行模式下的错误处理和输出管理
- 在帮助信息中增加新的并行编译选项说明
- 优化编译过程中的进度提示和状态显示
|
6 months ago |
韩天峰
|
208a34b134
|
feat(php): 添加对原生类型和方法调用的支持
- 新增 isMethodCall 和 isStaticCall 方法用于检测方法调用类型
- 实现 genScopeSwitchCode 方法用于生成作用域切换代码
- 移除 lastNativeCall 属性并优化相关逻辑
- 添加 defaultNativeType 属性控制原生类型使用
- 移除 resetExpr 方法简化表达式解析
- 使用 empty 替代 isset 检查 nativeFunctions
- 重构函数体解析逻辑并添加 Skip 异常处理
- 支持 std::int、std::float、std::bool 原生类型转换
- 添加 checkNativeFunction 方法处理函数声明检查
- 使用 getNativeType 方法统一类型获取逻辑
- 重构参数解析逻辑支持可变参数展开
- 更新 C++ 辅助函数支持作用域管理
- 添加原生类型测试用例
|
6 months ago |
韩天峰
|
fed0d7c2a0
|
feat(compiler): 添加属性映射支持用于PHP编译器
- 添加PROP_MAP常量和相关属性映射数据结构
- 实现getPropertyId方法用于获取属性标识符
- 更新getPropertyOffset方法以使用新的属性映射机制
- 修改静态属性查找逻辑以返回完整命名空间类名
- 在模板文件中添加属性映射数组声明和初始化
- 更新外部函数声明以包含属性获取功能
- 移除旧的属性偏移量预定义方式,改用统一的映射表管理
- 添加完整的属性访问测试用例验证功能正确性
|
6 months ago |
韩天峰
|
7b4eeefb19
|
fix(php): 修复目标名称验证逻辑
- 在无效标识符错误消息中显示实际的目标名称
- 在保留关键字错误消息中显示实际的目标名称
- 添加目录名称冲突检查以防止覆盖现有目录
- 统一错误消息格式使用反引号包围目标名称
|
6 months ago |
韩天峰
|
081c9fcc82
|
refactor(php): 移除调试代码并优化类定义获取逻辑
- 移除了 hasNativeClass 方法中的调试打印堆栈跟踪代码
- 将直接访问类定义数组改为使用 getClassDef 方法获取类定义
- 提高了代码的可维护性和性能表现
|
6 months ago |
韩天峰
|
a54985897f
|
fix(php): 修复类名处理逻辑和静态属性列表结构
- 修复 getNativeName 方法中函数名为空时的处理逻辑
- 添加调试追踪用于非Test类的原生类检查
- 使用 getNamespacedClassName 替代直接获取类名进行查找
- 修改静态属性列表为关联数组以支持完整的属性标识符
|
6 months ago |
韩天峰
|
4d0a44fdbd
|
feat(compiler): 实现静态属性支持和构造函数功能
- 添加静态属性列表存储和初始化机制
- 实现 self 关键字解析为带命名空间的类名
- 在扩展模板中添加静态属性设置代码生成
- 支持构造函数的参数传递和属性初始化
- 过滤抽象方法避免不必要的解析处理
- 添加 bool 类型和构造函数相关的测试用例
|
6 months ago |
韩天峰
|
dac3fa81e8
|
fix(generator): 修复闭包生成器中的变量状态恢复问题
- 将闭包生成器中的变量状态恢复代码从条件判断前移到条件判断后
- 确保在不使用当前作用域时正确恢复原始局部变量状态
- 统一对象、对象包装器、参数和闭包状态的恢复逻辑位置
refactor(compiler): 重构编译器基类中的函数和类管理逻辑
- 添加对函数定义存储结构的注释说明
- 移除废弃的 isNativeFunction 方法
- 添加 inClosure 状态重置功能
- 优化命名空间类名获取逻辑,移除冗余反斜杠
- 修复类方法不应保存到函数集合中的问题
- 添加函数添加辅助方法和原生函数检查方法
- 更新函数调用返回类型检测逻辑
feat(translator): 增强翻译器对类和接口的支持
- 添加对PHP属性声明的支持
- 增加对类常量重复定义的错误检查
- 完善接口解析和实现逻辑
- 优化类定义和继承关系处理
- 改进类常量和属性定义的解析方式
style(helper): 更新C++辅助头文件依赖
- 添加对Zend属性的支持
- 统一代码格式化和命名约定
perf(core): 优化对象克隆和类型转换性能
- 使用 convertToObject 方法替代直接标识符解析
- 提升实例化检查和类型转换效率
- 改进属性访问和错误报告机制
|
6 months ago |
韩天峰
|
989939bb90
|
feat(aot): 支持PHP数组展开语法和复杂数组解析
- 实现了数组展开运算符(...)的解析支持
- 添加了混杂数组赋值的多行插入处理逻辑
- 支持动态键名和不同类型的键值组合
- 优化了数组解析的类型判断和内存管理
- 新增了三个数组相关功能测试用例
- 提取了函数参数默认值解析的公共方法
- 修复了类属性默认值null判断的问题
|
6 months ago |
韩天峰
|
15ea7023f0
|
fix(php): 修复编译器中的命名空间处理和常量解析问题
- 修正 getNativeName 方法中命名数组构建逻辑,确保函数名正确添加到数组中
- 限制函数参数默认值只支持字面量,防止使用表达式获取值导致的问题
- 优化返回值处理逻辑,将 return 语句移至 afterStmtLines 队列确保内存安全
- 修改 parseConstFetch 方法签名,添加 scalar 参数控制常量解析行为
- 为函数参数信息添加类型注释提升代码可读性
|
6 months ago |
韩天峰
|
a0d750eea0
|
fix(compiler): 修复函数调用返回类型检测和命名空间解析问题
- 移除多余空行避免返回类型检测中断
- 添加绝对命名空间函数的特殊处理逻辑
- 修复函数调用解析中对完全限定名的支持
- 更新存根文件生成命令行参数传递机制
- 优化源码目录跟踪和头文件路径生成逻辑
|
6 months ago |
韩天峰
|
08ee0328f4
|
feat(php): 添加接口声明解析支持
- 在PHP解析器中添加Stmt_Interface语句类型的处理分支
- 实现接口声明的基本解析逻辑
- 为后续接口相关功能扩展奠定基础
|
6 months ago |
韩天峰
|
78f3ca8025
|
code format
|
6 months ago |
韩天峰
|
b091d2dad8
|
Revert "code format"
This reverts commit b6d64407f3.
|
6 months ago |
韩天峰
|
b6d64407f3
|
code format
|
6 months ago |
韩天峰
|
31a3275ecf
|
feat(compiler): 添加对PHP引用参数的支持
- 在ArgInfo类中新增byRef属性用于标识引用参数
- 重命名parseFunctionDeclaration方法为parseFunctionDecl
- 移除引用参数不支持的限制检查
- 在参数解析时添加对byRef的处理逻辑
- 为闭包函数添加引用参数的错误检查
- 在参数类型转换时添加引用参数的特殊处理
- 更新函数调用时参数获取的逻辑以支持引用参数
- 添加引用参数的测试用例
|
6 months ago |
韩天峰
|
9398f18a02
|
feat(php): 添加类型声明解析功能并优化变量检查逻辑
- 新增 parseTypeDecl 方法处理联合类型和可空类型
- 将函数返回类型解析改为使用新的类型声明解析方法
- 优化属性访问和数组访问时的变量存在性检查
- 在方法调用时添加变量存在性验证
- 修改属性定义中的类型解析为统一的方法调用
|
6 months ago |
韩天峰
|
24ea4d9806
|
refactor(php): 优化模块名称处理逻辑
- 将直接访问 targetName 属性改为使用 getModuleName 方法
- 移除数字开头目标名的预处理逻辑
- 新增 getModuleName 方法处理数字开头的模块名
- 统一模块入口函数中的名称引用方式
|
6 months ago |
韩天峰
|
095f9e8c66
|
feat(php): 添加类定义管理和属性访问优化功能
- 实现 addClass 方法用于添加类定义到编译器
- 优化 hasNativeClass 和 getClassDef 方法使用 escapeClass 处理类名
- 更新 escapeClass 方法支持反斜杠替换为下划线并去除首尾反斜杠
- 重构 getPropertyIdentifier 方法简化属性标识符获取逻辑
- 新增 findNativeProperty 方法实现原生属性查找功能
- 添加对私有、受保护和公共属性的访问权限检查
- 支持继承链中属性的向上查找功能
- 为 get_class_vars 函数添加完整的测试用例覆盖
|
7 months ago |
韩天峰
|
aa6d81d2a7
|
feat(compiler): 添加可变参数支持功能
- 在 ArgInfo 类中添加 variadic 属性用于标识可变参数
- 实现编译器对可变参数的验证逻辑,确保可变参数位于最后位置
- 修改参数类型处理逻辑,将可变参数转换为数组类型
- 更新函数调用参数解析,支持可变参数的展开和传递
- 在翻译器中实现可变参数的 C++ 代码生成逻辑
- 添加遍历可变参数的循环处理机制
- 新增可变参数功能的测试用例和示例文件
- 完善参数列表生成时对可变参数的特殊处理
|
7 months ago |
韩天峰
|
8ec0723ed5
|
feat(php): 添加匿名类支持和常量数据处理功能
- 添加 ANON_CLASS 常量用于生成匿名类名称
- 添加 constData 数组用于存储常量数据
- 实现 genAnonClassName 方法生成唯一匿名类名
- 修复 Stmt_Class 处理中的 break 语句缺失问题
- 扩展 parsePostOp 方法支持数组维度获取并检查未定义变量
- 实现 packData 和 addConstData 方法处理字节数据打包
- 在 parseNew 方法中实现对匿名类的完整支持
- 在生成的 C++ 代码中添加常量数据段输出
|
7 months ago |
韩天峰
|
aa6be88c6c
|
feat(php): 添加对PHP枚举类型的支持
- 在ClassDef实体中添加enum属性用于标识枚举类
- 修改编译器基类以支持枚举常量访问的特殊处理
- 移除旧的枚举示例文件并添加新的测试用例
- 更新翻译器以识别和标记枚举类型的类定义
|
7 months ago |
韩天峰
|
46e15ca247
|
feat(compiler): 添加对 Match 表达式和枚举的支持
- 在 CompilerBase 中添加了对 Expr_Match 节点的解析支持
- 修改 parseTernary 方法参数类型为 Node\Expr\Ternary
- 添加了 parseMatch 方法用于处理 Match 表达式
- 在 Preprocessor 中添加对 Stmt_Enum 和 Stmt_EnumCase 的预处理支持
- 扩展 prepareClass 方法以支持枚举类型的处理
- 在 Translator 中添加对 Stmt_Enum 的翻译支持
- 修改 parseClass 方法以正确处理枚举定义
- 添加测试文件 closure_016.phpt 和 closure_017.phpt 验证闭包功能
- 添加枚举示例文件 enum1.php 展示枚举用法
|
7 months ago |
韩天峰
|
288f1dddef
|
feat(closure): 实现闭包功能支持类内部方法访问$this
- 添加closure_005.phpt和closure_006.phpt测试用例验证闭包功能
- 修改CompilerBase.php中函数定义相关属性为可空类型并添加methodDef
- 实现resetMethod方法重置方法定义状态
- 优化函数参数和局部变量处理逻辑
- 添加genLocalVarDecl和genReturnCode方法生成变量声明和返回代码
- 改进闭包解析逻辑支持返回类型声明
- 更新newClosure调用传递this_参数支持类内闭包访问实例
- 重构MethodDef构造函数移除FunctionDef参数依赖
|
7 months ago |
韩天峰
|
7e5b6ef045
|
fix(const): 修复命名空间常量定义和引用问题
- 在常量名称前添加命名空间前缀以支持命名空间常量
- 将常量信息存储结构扩展为包含命名空间和名称字段
- 使用转义后的命名空间名称作为常量查找键值
- 更新模板中常量遍历变量名以避免混淆
- 修复常量定义时的字符串转义处理
- 添加命名空间常量测试用例验证功能
- 实现参数信息存根文件名生成方法
|
7 months ago |
韩天峰
|
0c02958589
|
feat(php): 添加复杂命名空间规则支持并优化函数名转义
- 实现复杂命名空间组合规则,支持 use foo\bar; bar\fn() 形式的调用
- 新增 escapeZendFnName 方法用于函数名转义处理
- 使用统一的函数名转义机制替换模板中的硬编码逻辑
- 移除函数定义中的静态关键字以提高灵活性
|
7 months ago |
韩天峰
|
9118fc4e33
|
feat(compiler): 支持函数别名和命名空间功能
- 实现了函数导入别名功能,解决命名冲突问题
- 添加了命名空间支持,包括嵌套命名空间解析
- 更新了函数定义实体类以支持命名空间属性
- 修改了编译器基础类中的函数解析逻辑
- 调整了扩展模板中函数注册的命名空间处理
- 优化了预处理器中的命名空间定义逻辑
- 完善了翻译器中函数包装器的命名空间支持
- 新增了函数别名查找和解析功能
- 添加了相关测试用例验证功能正确性
|
7 months ago |
韩天峰
|
d81c4cda62
|
fix(core): 修复数字文件名编译问题并优化代码结构
- 在run-tests.php中为数字文件名添加'app_'前缀以避免命名冲突
- 在Translator.php中为数字目标名称添加'app_'前缀以确保有效标识符
- 重构NativeCallToCDecl函数中的参数列表构建逻辑,调整代码顺序以提高可读性
- 添加测试用例验证岛屿周长计算算法的正确性
|
7 months ago |
韩天峰
|
92bd1fe56c
|
refactor(php): 优化编译器基础类的类型声明和控制流逻辑
- 将stop方法的返回类型从void改为never
- 简化多个条件分支中的else语句和break语句
- 更新parseFunction方法参数类型并添加异常注解
- 修改parseIdentifier方法参数类型为NodeAbstract
- 添加对continue语句的循环上下文检查
- 移除未使用的NodeAbstract导入
- 为Skip异常类添加文件头注释
- 重构函数调用优化器中的条件逻辑
|
7 months ago |
韩天峰
|
fe34c72c87
|
feat(compiler): 添加调试信息生成功能
- 在编译器选项配置中新增 debug-info 参数支持
- 在编译器基类中实现 genDebugInfo 方法用于生成调试信息
- 修改 parseAssignPropertyArrayDim 和 parseParentMethodCall 方法为受保护访问级别
- 在翻译器中集成 debug-info 命令行参数处理逻辑
- 更新属性赋值方式从 getPropertyIndirect 改为 attr 方法
- 在 C++ 主程序中添加异常处理时的未清理关闭标记
|
7 months ago |
韩天峰
|
8257f8a1c4
|
feat(generator): 添加常量符号注册功能
- 启用数组和对象常量定义支持
- 实现符号注册函数自动生成
- 添加 register_symbols 扩展模板支持
- 优化常量解析跳过复杂类型处理
- 新增模块符号注册函数匹配逻辑
|
7 months ago |
韩天峰
|
1d6e7522ab
|
refactor(php): 将PHP实体类移动到Entity子命名空间
- 将ClassDef.php移至src/Php/Entity/ClassDef.php并更新命名空间
- 将ClassLikeDef.php移至src/Php/Entity/ClassLikeDef.php并更新命名空间
- 将ConstantDef.php移至src/Php/Entity/ConstantDef.php并更新命名空间
- 将FunctionDef.php移至src/Php/Entity/FunctionDef.php并更新命名空间
- 将InterfaceDef.php移至src/Php/Entity/InterfaceDef.php并更新命名空间
- 将MethodDef.php移至src/Php/Entity/MethodDef.php并更新命名空间
- 将PropertyDef.php移至src/Php/Entity/PropertyDef.php并更新命名空间
- 更新CompilerBase.php中的实体类引用路径
- 更新MagicMethodDetector.php中的MethodDef引用路径
- 更新Translator.php中的所有实体类引用路径
|
7 months ago |
韩天峰
|
67ace98bb6
|
refactor(php): 将异常类移动到Exception命名空间
- 将RedoException重命名为Redo并移至PhpAot\Php\Exception命名空间
- 将SkipException重命名为Skip并移至PhpAot\Php\Exception命名空间
- 将SyntaxError移至PhpAot\Php\Exception命名空间
- 将Unsupported移至PhpAot\Php\Exception命名空间
- 更新所有相关文件中的use语句和异常引用
- 移除不再使用的PrettyPrinter导入
|
7 months ago |
韩天峰
|
423c10fe47
|
feat(compiler): 实现空值检查表达式解析功能
- 添加了对复杂嵌套表达式的 empty() 函数支持
- 实现了数组维度获取和属性访问的解析逻辑
- 添加了 SkipException 类用于跳过错误节点处理
- 优化了全局变量访问的错误处理机制
- 增强了类型转换和函数调用的参数处理
- 更新了测试用例验证空值检查功能正确性
- 修复了编译器在处理未定义类时的错误判断
|
7 months ago |
韩天峰
|
c58a85baa2
|
fix(stub): 修复常量生成中的表达式类型检查问题
- 添加了对非标量字符串表达式的类型验证
- 修复了常量类型未实现时的错误消息显示
- 统一使用 String_ 类型检查替代完整命名空间
- 将 shell_exec 替换为 passthru 以获取编译返回状态
- 添加编译失败时的错误提示机制
|
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 |
韩天峰
|
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 |