韩天峰
|
57220d63b9
|
feat(trait): 实现 trait 使用适配器功能支持别名和冲突解决
- 添加 traitAliases 和 traitIgnored 属性到 ClassDef 存储适配器配置
- 实现 trait 方法别名映射功能 (as)
- 实现 trait 方法冲突解决机制 (insteadof)
- 在预处理器中解析 trait use 语句的适配器选项
- 在翻译器中应用 trait 别名和忽略规则
- 添加完整的 trait 冲突测试用例验证功能正确性
|
4 months ago |
韩天峰
|
88693dcc21
|
feat(aot): 添加对 PHP Trait 特性的支持
- 实现了 Trait 的基本语法解析和处理功能
- 添加了 trait 属性、方法、常量的继承机制
- 实现了 trait 使用时的命名空间解析
- 添加了类与 trait 同名成员的冲突处理逻辑
- 新增 trait 相关的测试用例
- 重构了类定义结构以支持 trait 类型判断
|
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 |
韩天峰
|
95e7b5f6e4
|
refactor(compiler): 重构编译器代码结构并修复空指针检查问题
- 移除编译器主函数中过早的函数声明和全局变量声明生成逻辑
- 将扩展源文件生成逻辑移至翻译器类的编译流程中
- 修改genExtension方法返回生成的文件路径而不是接收文件参数
- 修复预处理器中对类标志的空指针检查,避免访问未设置的属性
- 更新并行编译时的进度显示颜色从蓝色调整为浅蓝色
- 重新组织源文件编译顺序,确保扩展模块文件正确加入编译列表
|
5 months ago |
韩天峰
|
485dce7b95
|
refactor(compiler): 优化编译器类方法处理逻辑
- 移除 CompilerBase.php 中不再使用的 method 属性初始化
- 为构造、析构、克隆方法添加无返回值类型限制
- 添加类和方法重置功能,确保状态正确清理
- 统一重复变量测试消息文本
- 调整静态绑定测试中的属性访问权限
- 新增受保护属性访问测试用例
|
5 months ago |
韩天峰
|
1341dec3f2
|
feat(php): 添加预处理器完成状态提示
- 在预处理完成后显示总共处理的源文件数量
- 使用浅蓝色输出完成状态信息
|
5 months ago |
韩天峰
|
3d2ab3cd53
|
refactor(php): 移除未使用的依赖导入
- 移除了未使用的 CircularDependencyException 导入
- 移除了未使用的 ElementNotFoundException 导入
- 保留了必要的 StringSort 以及其他实体类导入
|
5 months ago |
韩天峰
|
abff242bf4
|
refactor(Php): 移除循环依赖处理逻辑
- 删除了 CircularDependencyException 的捕获和处理代码
- 移除了 resolveCircularDependencies 方法及其相关实现
- 简化了依赖排序流程,直接使用 sorter->sort() 进行排序
- 移除了相关的警告提示和调试信息输出逻辑
|
5 months ago |
韩天峰
|
394c5ee0b7
|
refactor(php): 优化编译器基础类和预处理器逻辑
- 移除了未使用的 PropertyDef 导入声明
- 添加了 getRelativePath 方法用于获取相对路径
- 调整了方法调用返回类型检测的条件判断逻辑
- 修改了常量和别名解析的条件判断结构
- 重构了类继承检查逻辑,改进了内部类继承关系处理
- 更新了代码格式化时的路径显示为相对路径
- 重写了循环依赖解决算法的实现位置
- 修复了引用参数默认值的处理方式
- 统一了多个文件中的路径显示为相对路径格式
|
5 months ago |
韩天峰
|
d37c979031
|
重构:在预处理阶段获取所有类、函数、常量、属性定义,解决循环依赖的问题
|
5 months ago |
韩天峰
|
c67c3dfea9
|
refactor(compiler): 优化编译器内部结构并添加常量支持
- 添加 internalConstants 数组用于存储内部常量
- 重构变量赋值类型检查逻辑,简化条件判断
- 添加 isInternalInterface 和 isInternalConstant 辅助方法
- 优化参数类型解析过程,统一对象类型处理
- 改进常量查找逻辑,优先检查内部常量
- 增强类继承关系检查,支持内部接口验证
- 在预处理器中添加循环依赖检测和解决机制
- 引入 TopSort 库处理文件依赖排序问题
- 优化反射类,添加内部接口识别功能
- 初始化内部常量列表,提升常量处理性能
- 添加测试用例验证类型命中功能
|
5 months ago |
韩天峰
|
128b6b8a73
|
refactor(php): 优化PHP编译器类型检查和函数定义逻辑
- 添加对内置类型的映射支持,改进类型解析逻辑
- 为函数定义添加精确返回类型标记功能
- 修复对象重新赋值时的类型检查条件判断
- 改进变量赋值时的类型验证规则,支持var类型灵活赋值
- 添加数组转换表达式类型识别支持
- 优化函数调用返回值类型获取逻辑
- 新增类继承关系检查辅助方法
- 改进参数传递时的对象类型验证
- 调整预处理器中的use语句解析顺序
- 修正符号调用记录中的类名解析逻辑
|
5 months ago |
韩天峰
|
34e112d697
|
feat(php): 添加类构造函数初始化和清理功能
- 在ClassDef中添加ctorInit、ctorClean属性和propertyContext
- 修改编译器在对象创建时执行属性初始化代码
- 添加对默认数组属性的支持和测试
- 实现属性上下文管理以正确处理构造函数逻辑
- 更新预处理器和翻译器以支持新的属性处理机制
- 添加property_exists函数的相关测试用例
|
5 months ago |
韩天峰
|
4a5fe8dd6c
|
fix(php): 修复抽象构造函数中提升属性的声明检查
- 添加了对抽象构造函数中提升属性的验证逻辑
- 在方法重写检查后增加了专门的构造函数处理
- 防止在抽象构造函数中声明提升属性导致的错误
- 实现了参数提升属性的检测和错误报告机制
|
5 months ago |
韩天峰
|
b8516b6ac0
|
fix(php): 修复存根文件函数返回类型检查和类方法处理逻辑
- 修复存根文件中魔术方法(__construct/__destruct/__clone)不需要声明返回类型的问题
- 在FunctionDef构造函数中添加stub参数传递
- 修正main函数参数类型检查逻辑,添加逻辑非运算符
- 移除类方法中重复的'this_'参数添加,在stub函数处理后重新添加
- 添加stub函数的特殊处理逻辑,无具体实现时重置函数定义
- 修复类方法名称处理中的变量引用问题
|
5 months ago |
韩天峰
|
1a7bfe1de5
|
fix(preprocessor): 解决重复函数和类声明检查问题
- 在函数声明前添加 prepare 步骤以确保预处理器初始化
- 添加重复函数名称检测逻辑,防止相同函数名重复声明
- 添加重复类名检测逻辑,避免类重复定义错误
- 使用小写函数名作为符号表键值进行冲突检查
- 在检测到重复声明时抛出致命错误
|
5 months ago |
韩天峰
|
e508b6de4f
|
refactor(php): 重构编译器内部函数和类管理机制
- 移除 CompilerTest 单例模式,改为 create 方法创建实例
- 将 nativeFunctions 重命名为 functions 并统一使用 addFunction/hasFunction/getFunction 方法管理
- 将 nativeConstants 重命名为 constants 并统一使用相应方法管理
- 将 nativeClasses 相关方法重构为 getClass/hasClass 等统一命名方式
- 添加 ConstantDef 实体类用于常量定义管理
- 优化函数查找逻辑,使用 escapeFunction 进行名称转换
- 重构预处理器中的函数注册逻辑
- 更新模板文件中的变量引用以匹配新的属性命名
- 添加重复函数、类的测试用例并移除旧的错误测试文件
|
5 months ago |
韩天峰
|
21b7de3905
|
feat(php): 添加对trait的支持和优化函数调用处理
- 在AstNodeType中添加isNull方法用于检查null值
- 更新CompilerBase中的参数默认值处理逻辑,支持引用参数的null默认值
- 将FuncCallOptimizer中的函数移动到合适位置并修复逻辑
- 重命名Preprocessor中的命名空间准备方法
- 在Translator中添加对trait语句的支持并抛出异常
- 添加对func_get_args和func_get_arg函数的优化实现
|
5 months ago |
韩天峰
|
ddeceec91f
|
feat(compiler): 添加符号声明和调用跟踪功能并优化方法调用检查
- 添加 symbolDeclInFile 和 symbolCallInFile 属性用于存储函数和类方法的声明及调用信息
- 修改 getNativeMethod 方法增加 checkArgs 参数控制参数检查逻辑
- 优化 Match 表达式解析逻辑,支持非变量条件表达式的处理
- 移除未处理匹配情况时不必要的返回空值语句
- 在预处理器中添加对静态调用、静态属性访问、类常量获取和新对象创建的依赖类跟踪
- 修复抽象类实例化错误消息中的字符串插值语法
- 为动态调用场景禁用参数检查以避免误报错误
|
5 months ago |
韩天峰
|
d919ee280c
|
fix(php): 修复抽象类方法调用和实例化错误检查
- 添加了抽象类不能被实例化的检查,在编译时抛出错误
- 修复了方法准备逻辑,确保抽象方法在非抽象类中的正确验证
- 更新了测试期望输出以匹配新的错误格式
- 优化了错误堆栈跟踪的显示格式
|
5 months ago |
韩天峰
|
537222b1e7
|
refactor(php): 重构PHP编译器基础类和预处理器
- 在resetNamespace方法中添加useAliases重置
- 将名称空间比较改为大小写不敏感匹配
- 在preprocessor中添加文件、函数、类和名称空间重置调用
- 将getNamespacedClassName替换为getFullClassName方法
- 添加目录检查防止路径错误
|
5 months ago |
韩天峰
|
37b44368eb
|
feat(compiler): 添加对ThinkPHP和Laravel项目的编译支持
- 在.gitignore中添加thinkphp、laravel和tmp项目目录的忽略规则
- 修改错误处理逻辑,使用统一的output方法替代直接echo输出
- 新增getFullClassName方法用于获取完整类名
- 添加Unsupported异常类型并改进语法检查
- 实现自继承类的检测和错误报告功能
- 优化类名解析逻辑,提高编译器兼容性
|
5 months ago |
韩天峰
|
7dd30e2908
|
refactor(php): 优化PHP编译器代码结构和类型检查逻辑
- 修改clone表达式解析为使用php::clone函数调用
- 更新属性获取表达式的对象转换方式
- 使用checkArgType方法替代直接的类型比较进行魔术方法验证
- 重构预处理器中的方法准备逻辑以跳过抽象方法
- 添加Modifiers导入并改进依赖排序逻辑
- 为genNativeMethod方法参数添加类型声明
|
5 months ago |
韩天峰
|
7681f6dc26
|
fix(php): 修复预处理器中的依赖关系处理逻辑
- 在符号依赖检查中添加文件过滤条件,避免将当前文件添加到依赖列表中
- 移除对函数节点类型的冗余检查,简化符号声明文件映射逻辑
- 确保所有符号声明都能正确记录到对应文件中,提高依赖解析准确性
|
5 months ago |
韩天峰
|
f6a3e5b4b3
|
refactor(php): 重构PHP编译器依赖管理和类属性初始化功能
- 移除ClosureGenerator中无用的方法注释
- 在CompilerBase中重命名参数并添加isInternalClass方法
- 从ConstantDef中移除无用的导入
- 完全删除FileSorter类,改用外部库MJS\TopSort进行文件排序
- 在Preprocessor中重构依赖收集逻辑,优化文件排序算法
- 过滤内置函数和类,避免参与依赖管理
- 重构Translator中的类属性初始化代码,优化对象创建流程
- 统一字符串拼接操作符为单引号格式
|
5 months ago |
韩天峰
|
bb52f8ab10
|
refactor(php): 优化PHP编译器基础组件结构
- 在CompilerBase中添加类继承关系存储数组并增加注释说明
- 重命名FileSorter中的变量名提高代码可读性
- 简化Preprocessor中局部变量声明方式
- 限定prepareFunction方法参数类型增强类型安全
- 添加关于父类方法覆盖的注释说明
|
5 months ago |
韩天峰
|
3743a32eb8
|
refactor(php): 统一使用小写键值优化编译器方法重写检查
- 在 CompilerBase 中添加 isOverrideMethod 辅助方法简化重写判断逻辑
- 将 Preprocessor 中的所有符号名称转换为小写以确保一致性
- 修改类继承关系存储使用小写键值避免大小写敏感问题
- 优化方法重写检测循环使用小写键值提升查找性能
- 统一函数和方法名称的大小写处理逻辑
|
5 months ago |
韩天峰
|
78c7daa646
|
refactor(php): 将函数声明和调用跟踪重构为符号级别
- 将 $functionDeclInFile 和 $functionCallInFile 重命名为 $symbolDeclInFile 和 $symbolCallInFile
- 更新 CompilerBase 类中的变量引用以使用新的符号命名
- 修改 FileSorter 构造函数参数和属性以匹配新的符号命名
- 调整 Preprocessor 中的符号收集逻辑以支持类继承关系
- 在 Translator 中添加字符串字面量外部声明支持
- 扩展符号跟踪功能以涵盖类声明和父类引用
|
5 months ago |
韩天峰
|
1441a7e5be
|
cs-fix
|
5 months ago |
韩天峰
|
41e46c2479
|
refactor(php): 重构父类解析逻辑以支持完全限定名称
- 添加 getParentClass 方法来处理 NodeAbstract 类型的 extends 参数
- 在 Preprocessor 中使用新的 getParentClass 方法替代直接调用 getNamespacedClassName
- 在 Translator 中使用新的 getParentClass 方法替代直接调用 getNamespacedClassName
- 支持对 FullyQualified 名称类型的正确解析
- 保持对普通名称类型的向后兼容性
|
5 months ago |
韩天峰
|
7871eb2820
|
feat(compiler): 添加类方法重写支持和动态绑定机制
- 新增 parentClass 属性用于存储父类名称
- 实现 classMethodOverride 和 classExtends 数组用于检测方法重写
- 添加方法重写预处理逻辑,支持子类和父类同名方法的动态绑定
- 修复静态方法调用时的对象指针传递问题
- 增强方法查找机制,支持向上递归查找父类方法
- 添加测试用例验证方法重写功能的正确性
- 改进错误提示信息,提供更准确的错误定位
|
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 |
韩天峰
|
3641cb3184
|
feat(php): 添加对箭头函数和接口声明的支持
- 实现了箭头函数语法解析和C++代码生成
- 在编译器基础类中添加了对Expr_ArrowFunction节点类型的处理
- 新增parseArrowFunction方法用于处理箭头函数的参数和返回值
- 更新预处理器跳过接口声明的处理逻辑
- 修改测试桩生成脚本以支持声明和分组使用语句的处理
|
6 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 |
韩天峰
|
e0a4e2f977
|
feat(compiler): 添加空合并赋值运算符支持并优化变量检查
- 实现了 ??= 运算符的解析和编译功能
- 添加了变量存在性检查的改进实现
- 增加了左值有效性验证确保赋值操作合法
- 更新了测试用例覆盖空合并赋值的各种场景
- 修复了 stray code 检查的错误定位问题
- 在编译器基类中增加了 isset 和 empty 操作常量定义
|
7 months ago |
韩天峰
|
9118fc4e33
|
feat(compiler): 支持函数别名和命名空间功能
- 实现了函数导入别名功能,解决命名冲突问题
- 添加了命名空间支持,包括嵌套命名空间解析
- 更新了函数定义实体类以支持命名空间属性
- 修改了编译器基础类中的函数解析逻辑
- 调整了扩展模板中函数注册的命名空间处理
- 优化了预处理器中的命名空间定义逻辑
- 完善了翻译器中函数包装器的命名空间支持
- 新增了函数别名查找和解析功能
- 添加了相关测试用例验证功能正确性
|
7 months ago |
韩天峰
|
288021d16c
|
feat(compiler): 添加对孤立代码的检测和错误处理
- 在 CompilerBase 中添加 foundStrayCode 方法用于报告孤立代码错误
- 在 Preprocessor 中为 Stmt_Expression 类型添加孤立代码检测
- 防止在扩展模式下生成名为 main 的函数
- 添加 empty-2.phpt 测试用例验证空值合并操作符功能
|
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 |
韩天峰
|
57e1790639
|
feat(compiler): 实现对静态属性和常量的原生支持
- 添加 hasConstant、getMethod 和 getConstant 方法到 ClassDef 类
- 在 CompilerBase 中实现静态属性和常量的原生解析功能
- 添加 parseNativeStaticPropertyFetch 和 findNativeStaticProperty 方法
- 修改 getFuncPtr 方法以支持宏参数
- 实现对类常量和静态属性的直接访问优化
- 添加对后置操作符中属性获取的支持
- 更新 examples/micro_bench.php 测试用例以验证功能
- 在 PropertyDef 中添加 isStatic 方法判断静态属性
- 重构预处理器对常量定义的处理逻辑
|
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 |
韩天峰
|
13a5849584
|
代码格式化,命名空间处理
|
7 months ago |
韩天峰
|
8c20fd18c8
|
refactor(core): 优化代码结构和性能
- 调整 import 语句顺序,将 Node 相关引入规范化
- 规范化字符串拼接操作,统一使用点号连接
- 统一比较运算符写法,调整变量与常量的比较顺序
- 移除多余空行和分号,精简代码结构
- 标准化缩进和代码格式,提升可读性
- 优化循环和条件判断逻辑,使用前置递增递减
- 修复类定义和方法定义的格式一致性
- 更新依赖管理方式,优化编译器配置加载
|
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 |
韩天峰
|
1b78fc7fd9
|
feat(php): 添加PHP编译器基础功能和八皇后问题示例
- 在CompilerBase中初始化result变量以避免未定义变量错误
- 优化Stmt_Nop节点处理逻辑,移除不必要的赋值操作
- 添加对空结果和空后续语句行的条件判断,避免向输出添加空内容
- 实现parseAssignPropertyArrayDim方法用于处理对象属性数组维度赋值操作
- 在parseAssign方法中添加属性获取检查,支持属性赋值操作解析
- 添加dump调试方法用于在指定行号时输出节点信息
- 新增EightQueue.php示例文件,实现优化版八皇后问题求解算法
- 修改Preprocessor以支持Trait语句的预处理
- 更新Translator以支持Trait语句的转换处理
- 扩展类相关方法签名以接受Trait节点类型参数
|
7 months ago |
韩天峰
|
3dc79d2074
|
fix(parser): 修复抽象类实例化和空语句处理问题
- 添加抽象类无法实例化的测试用例
- 修复doc注释解析器返回空数组的问题
- 添加对Stmt_Nop语句类型的处理支持
- 确保预处理器正确处理空语句类型
|
7 months ago |
韩天峰
|
a6826d5fd0
|
feat(compiler): 添加PHP语法错误处理和类常量重复定义检查
- 在编译器中引入SyntaxError异常类用于处理PHP语法错误
- 修改预处理器捕获PHP解析错误并转换为SyntaxError异常
- 实现类常量重复定义的检测逻辑并抛出致命错误
- 添加多个测试用例验证类常量相关错误场景
- 更新编译器跳过包含语法错误的文件处理流程
|
7 months ago |