thomasmarinissen / class-dependency-resolver
PHP 类依赖解析器
v0.1.2
2024-09-25 20:37 UTC
Requires
- php: ^8.3
- nikic/php-parser: ^5.2
Requires (Dev)
- laravel/pint: ^1.17
- mockery/mockery: ^1.6
- nunomaduro/collision: ^8.4
- phpstan/phpstan: ^1.12
- phpunit/phpunit: ^11.3
README
描述
PHP 类依赖解析器是一个库,旨在通过解析 PHP 类/文件的依赖关系来为大型语言模型提供上下文。它将完全限定类名、接口和特性映射到相应的文件路径,并管理文件之间的直接依赖关系。库的主要入口点是 Resolver
类。
目录
安装
要安装类依赖解析器库,请使用 Composer
composer require thomasmarinissen/class-dependency-resolver
确保您的 PHP 版本兼容(PHP 8.3 或更高版本),并且您的系统上已安装 Composer。
基本用法
要使用类依赖解析器,您需要使用您想要扫描 PHP 文件的目录初始化 Resolver
类。以下是一个基本示例
use Thomasmarinissen\ClassDependencyResolver\Resolver; // Directories to scan $directories = ['/path/to/your/php/files']; // Initialize the Resolver $resolver = new Resolver($directories); // Get the file path for a specific class $filePath = $resolver->filePathByName('Your\Namespace\YourClass'); // Get the dependencies for a specific file $dependencies = $resolver->dependenciesByFile('/path/to/your/php/files/YourClass.php');
此示例演示了如何初始化解析器、构建依赖关系映射并检索文件路径和依赖关系。
配置
Resolver
类允许您指定在解析文件时要针对的 PHP 版本。默认情况下,它使用宿主机的 PHP 版本。您可以通过向构造函数传递一个 PhpVersion
实例来指定不同的版本
use PhpParser\PhpVersion; use Thomasmarinissen\ClassDependencyResolver\Resolver; // Specify PHP version $phpVersion = PhpVersion::fromString('8.3'); // Initialize the Resolver with a specific PHP version $resolver = new Resolver(['/path/to/your/php/files'], $phpVersion);
这允许您在解析依赖关系时确保与不同 PHP 版本的兼容性。
示例
示例 1:解析类依赖关系
use Thomasmarinissen\ClassDependencyResolver\Resolver; $directories = ['/path/to/your/php/files']; $resolver = new Resolver($directories); $className = 'App\Controllers\HomeController'; $filePath = $resolver->filePathByName($className); $dependencies = $resolver->dependenciesByName($className); echo "File path for $className: $filePath\n"; echo "Dependencies: " . implode(', ', $dependencies) . "\n";
示例 2:处理多个目录
use Thomasmarinissen\ClassDependencyResolver\Resolver; $directories = ['/path/to/first/directory', '/path/to/second/directory']; $resolver = new Resolver($directories); $filePath = $resolver->filePathByName('Another\Namespace\AnotherClass'); echo "File path: $filePath\n";
示例 3:按文件路径解析类依赖关系
use Thomasmarinissen\ClassDependencyResolver\Resolver; $directories = ['/path/to/first/directory']; $resolver = new Resolver($directories); $filePath = '/path/to/first/directory/AnotherClass.php'; $dependencies = $resolver->dependenciesByFile($filePath); echo "Dependencies: " . implode(', ', $dependencies) . "\n";
这些示例说明了如何解析类或文件的依赖关系并处理多个目录。
贡献
欢迎贡献!如果您想为类依赖解析器项目做出贡献,请遵循以下指南
- 分叉存储库。
- 为您的功能或错误修复创建一个新分支。
- 进行更改并确保所有测试通过。
- 提交一个带有更改描述的拉取请求。
请遵循编码标准,并为任何新功能包含测试。
测试
要为类依赖解析器库运行测试,您需要安装 PHPUnit。您可以使用以下命令运行测试
composer test
此命令将执行定义在 tests
目录中的 PHPUnit 测试。在提交任何贡献之前,请确保所有测试都通过。
许可证
该项目采用 MIT 许可证 - 有关详细信息,请参阅 LICENSE 文件。