mdagostino/dependencyresolver

通用依赖解析器。返回一个扁平数组,以尊重其依赖关系来加载组件。

1.0.0 2014-10-22 22:07 UTC

This package is not auto-updated.

Last update: 2024-09-25 12:57:59 UTC


README

Build Status

此包允许定义一组依赖其他组件的通用组件。然后依赖解析器将定义这些组件的加载顺序。

基本用法

use mdagostino\DependencyResolver\DependencyResolver;

$resolver = new DependencyResolver();
$resolver
  ->component('ITEM 1')->requires('ITEM 3', 'ITEM 4') // Item 1 requires item 3 and 4.
  ->component('ITEM 2')->requires('ITEM 1')           // Item 2 requires item 1.
  ->component('ITEM 3')                               // Item 3 doesn't have dependencies.
  ->component('ITEM 4');                              // Item 4 doesn't have dependencies.

$ordered = $resolver->resolveDependencies();
print_r($ordered);
// Prints:
// ITEM 3
// ITEM 4
// ITEM 1
// ITEM 2

功能。

循环依赖检测。

示例

use mdagostino\DependencyResolver\DependencyResolver;

$resolver = new DependencyResolver();
$resolver
  ->component('A')->requires('B')
  ->component('B')->requires('A');

$ordered = $resolver->resolveDependencies();

// Trow Exception: "Circular dependency detected"

检查是否已定义所有组件。

示例

use mdagostino\DependencyResolver\DependencyResolver;

$resolver = new DependencyResolver();
$resolver
  ->component('A')->requires('B', 'C')
  ->component('B');

  $ordered = $resolver->resolveDependencies();
  // Trow Exception: "There is a component not defined: C"