pbergman/tree-helper

一个用于打印树的 symfony 控制台助手

1.0.2 2022-02-08 08:28 UTC

This package is auto-updated.

Last update: 2024-08-29 12:44:10 UTC


README

这是一个用于 symfony 控制台以流畅和灵活的方式打印树的轻量级库。

输出类似于 Linux tree 命令,可以用于调试或输出关系型数据。

使用方法

$tree = new TreeHelper($output);

$tree
    ->newNode('first')
        ->addValue('fist value')
        ->addValue('second value')
        ->newNode('fist sub')
            ->addValue('fist sub value')
            ->addValue('second sub value')
            ->newNode('fist sub sub')
                ->addValue('fist sub sub value')
                ->addValue('second sub sub value')            
            ->end()
        ->end()
    ->newNode('second')
        ->addValue('second value')
        ->addValue('second second value')
    ->end();
    
$tree->printTree();    

或者

$tree = new TreeHelper($output);
$tree->addArray([
    'first' => [
        0 => 'fist value',
        1 => 'second value',
        'fist sub' => [
            0 => 'fist sub value',
            1 => 'second sub value',
            'fist sub sub' => [
                'fist sub sub value',
                'second sub sub value',
            ],
        ],
    ],
    'second' => [
        'second value',
        'second second value',
    ]
]);

这将输出

.
│
└── first
    ├── fist value
    ├── second value
    ├── fist sub
    │   ├── fist sub value
    │   ├── second sub value
    │   └── fist sub sub
    │       ├── fist sub sub value
    │       └── second sub sub value
    └── second
        ├── second value
        └── second second value

有关其他示例,请参阅测试。

方法

newNode($name)

创建一个新的节点并将其绑定到父节点

addNode($nodeobject:self)

将节点追加到树中

end()

将返回父对象(如果设置了,否则为 null)

getRoot()

将返回根节点

printTree($outputobject:OutputInterface)

将树打印到输出

findNode($name)

通过标题搜索节点

toArray()

返回数据的数组表示

getTitle()

返回节点的标题

setTitle($title)

设置节点的标题

addValue($value)

向节点添加一个值,这可以是一个有效的标量或具有 __toString 方法的对象

addArray($array)

向节点添加一个嵌套数组

setValues($array)

向节点添加一个扁平数组,这将作为节点的值设置

setParent($parentobject:self)

设置节点的父节点,如果节点已与给定的节点链接,则将抛出 RuntimeException,这样我们不会得到无限循环。

getNodes()

获取节点中定义的所有(子)节点,所有节点仅保存在根节点中,因此要获取所有节点,您可能需要执行此操作 $t->getRoot()->getNodes(); 否则,它将返回父节点设置为节点的节点,从您调用此方法的位置开始。

setMaxDepth($depth)

设置节点值的最大深度,这可以在全局(根节点)或特定节点上完成。

getMaxDepth()

返回设置的最大深度

setFormats()

设置使用的格式

$tree->setFormats([
    TreeHelper::LINE_PREFIX_EMPTY => '  ',
    TreeHelper::LINE_PREFIX => '│ ',
    TreeHelper::TEXT_PREFIX => '├ ',
    TreeHelper::TEXT_PREFIX_END => '└ ',
]);

例如,no 它将使用两个空格缩进而不是四个,请参阅测试

setFormat($id, $format)

覆盖特定格式