digilist / dependency-graph
PHP 的依赖图解析器
v0.4.2
2024-08-07 07:07 UTC
Requires
- php: >=8.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10 || ^11
This package is not auto-updated.
Last update: 2024-09-13 08:36:49 UTC
README
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 元素(基本类型、数组、对象、资源...)。