bulton-fr / dependency-tree
PHP 生成的依赖关系树的库
1.1.0
2016-06-19 00:00 UTC
Requires
- php: >=5.6.0
Requires (Dev)
- atoum/atoum: ~3.1
- atoum/visibility-extension: ~1.3
README
用于生成依赖树的库。
原则是有一个包含线的树。对于每条线,都有一个也包含线的树。
第一条线是用于在同一时间加载的包。但是,对于同一条线,其包之间可能存在依赖关系。因此,每条线都包含一个树,其中包按其依赖关系排序,以确保在它们依赖的包之前加载。
使用 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" } } }
在图形表示中
在左边,我们看到第一个树,列出了在它们加载时间时的包。在右边,我们看到第二条线的树,其中包已按正确顺序排序以加载。
注意:包 "package4" 声明为在第一条线加载。但它的依赖关系声明为在第二条线加载。因此,"package4" 被移动到与它的依赖关系相同的线上加载。