thomasmarinissen/class-dependency-resolver

v0.1.2 2024-09-25 20:37 UTC

This package is auto-updated.

Last update: 2024-09-25 20:39:14 UTC


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";

这些示例说明了如何解析类或文件的依赖关系并处理多个目录。

贡献

欢迎贡献!如果您想为类依赖解析器项目做出贡献,请遵循以下指南

  1. 分叉存储库。
  2. 为您的功能或错误修复创建一个新分支。
  3. 进行更改并确保所有测试通过。
  4. 提交一个带有更改描述的拉取请求。

请遵循编码标准,并为任何新功能包含测试。

测试

要为类依赖解析器库运行测试,您需要安装 PHPUnit。您可以使用以下命令运行测试

composer test

此命令将执行定义在 tests 目录中的 PHPUnit 测试。在提交任何贡献之前,请确保所有测试都通过。

许可证

该项目采用 MIT 许可证 - 有关详细信息,请参阅 LICENSE 文件。