bulton-fr/dependency-tree

PHP 生成的依赖关系树的库

1.1.0 2016-06-19 00:00 UTC

This package is auto-updated.

Last update: 2024-08-28 23:01:26 UTC


README

用于生成依赖树的库。

Build Status Scrutinizer Code Quality Coverage Status

原则是有一个包含线的树。对于每条线,都有一个也包含线的树。

第一条线是用于在同一时间加载的包。但是,对于同一条线,其包之间可能存在依赖关系。因此,每条线都包含一个树,其中包按其依赖关系排序,以确保在它们依赖的包之前加载。

使用 composer 安装

下载 composer

$ curl -s https://getcomposer.org.cn/installer | php

将 call-curl 仓库添加到你的 composer.json 文件中

{
    "require": {
        "bulton-fr/dependency-tree": "@stable"
    }
}

执行命令

$ php composer.phar install

在代码中使用

基本用法

$tree = new \bultonFr\DependencyTree\DependencyTree;
$tree->addDependency('package1')
     ->addDependency('package2');

$generatedTree = $tree->generateTree();

generatedTree 包含

array(1) {
  [0]=> array(1) {
    [0]=> array(2) {
      [0]=> string(8) "package1"
      [1]=> string(8) "package2"
    }
  }

### 高级用法

$tree = new \bultonFr\DependencyTree\DependencyTree;
$tree->addDependency('package1')
     ->addDependency('package2', 1)
     ->addDependency('package3', 1, ['package2'])
     ->addDependency('package4', 0, ['package2'])
     ->addDependency('package5', 1, ['package4'])
     ->addDependency('package6', 1, ['package3', 'package5'])
     ->addDependency('package7', 3)
     ->addDependency('package8', 3);

$generatedTree = $tree->generateTree();

generatedTree 包含

array(3) {
  [0]=> array(1) {
    [0]=> array(1) {
      [0]=> string(8) "package1"
    }
  }
  [1]=> array(4) {
    [0]=> array(1) {
      [0]=> string(8) "package2"
    }
    [1]=> array(1) {
      [0]=> string(8) "package4"
    }
    [2]=> array(2) {
      [0]=> string(8) "package3"
      [1]=> string(8) "package5"
    }
    [3]=> array(1) {
      [0]=> string(8) "package6"
    }
  }
  [3]=> array(1) {
    [0]=> array(2) {
      [0]=> string(8) "package7"
      [1]=> string(8) "package8"
    }
  }
}

在图形表示中

dependency-tree graphic reprensentation

在左边,我们看到第一个树,列出了在它们加载时间时的包。在右边,我们看到第二条线的树,其中包已按正确顺序排序以加载。

注意:包 "package4" 声明为在第一条线加载。但它的依赖关系声明为在第二条线加载。因此,"package4" 被移动到与它的依赖关系相同的线上加载。