磁力56 / 依赖图
PHP依赖图解析器
dev-master
2023-09-22 11:40 UTC
Requires
- php: >=7.0
Requires (Dev)
- phpunit/phpunit: 4.5.*
This package is auto-updated.
Last update: 2024-09-22 13:43:22 UTC
README
PHP 依赖图
此库提供了一个简单的依赖图解析器。它支持多个根节点,这些节点会自动检测。
安装
您可以使用Composer通过要求digilist/php-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元素(基本类型、数组、对象、资源等)。