digilist/dependency-graph

PHP 的依赖图解析器

v0.4.2 2024-08-07 07:07 UTC

This package is not auto-updated.

Last update: 2024-09-13 08:36:49 UTC


README

PHP

PHP 依赖图

此库提供了一个简单的依赖图解析器。它支持自动检测的多根节点。

安装

您可以使用 Composer 安装此库,方法是在项目中添加 digilist/dependency-graph

示例用法

定义依赖关系有两种方式。一种方式是在节点上直接通过调用 dependsOn 方法定义依赖关系。使用此方法时,您必须手动将节点添加到图中(至少是根节点)。

$nodeA = new DependencyNode('A');
$nodeB = new DependencyNode('B');
$nodeC = new DependencyNode('C');
$nodeD = new DependencyNode('D');
$nodeE = new DependencyNode('E');

$nodeA->dependsOn($nodeB);
$nodeA->dependsOn($nodeD);
$nodeB->dependsOn($nodeC);
$nodeB->dependsOn($nodeE);
$nodeC->dependsOn($nodeD);
$nodeC->dependsOn($nodeE);

$graph = new DependencyGraph();
$graph->addNode($nodeA);
$resolved = DependencyGraph->resolve(); // returns [D, E, C, B, A]

或者,您也可以在图上定义依赖关系。使用此方法时,根节点将自动检测。

$graph = new DependencyGraph();

$nodeA = new DependencyNode('A');
$nodeB = new DependencyNode('B');
$nodeC = new DependencyNode('C');
$nodeD = new DependencyNode('D');
$nodeE = new DependencyNode('E');

$graph->addDependency($nodeA, $nodeB);
$graph->addDependency($nodeA, $nodeD);
$graph->addDependency($nodeB, $nodeC);
$graph->addDependency($nodeB, $nodeE);
$graph->addDependency($nodeC, $nodeD);
$graph->addDependency($nodeC, $nodeE);

$resolved = DependencyGraph->resolve(); // returns [D, E, C, B, A]

传递给 DependencyNode 的有效负载可以是任何任意 PHP 元素(基本类型、数组、对象、资源...)。