aeviiq/tree-node

一个提供树节点功能的库。

v1.0 2024-01-15 12:34 UTC

This package is auto-updated.

Last update: 2024-09-15 13:56:49 UTC


README

一个提供树节点功能的库。

安装

composer require aeviiq/tree-node

声明

// ...
use Aeviiq\TreeNode\TreeNodeTrait;

final class Foo implements FooBarInterface
{
    use TreeNodeTrait;
    
    // ...
}

将为Foo类提供支持树节点结构的功能

Image description

用法

$foo = new Foo();
$foo2 = new Foo();
$foo->addChild($foo2);

$foo->isRoot(); // true
$foo2->isRoot(); // false

$foo->isLeaf(); // false
$foo2->isLeaf(); // true
$foo2->getRoot() === $foo; // true

重要提及

*没有针对节点可能成为自己的祖父或子的情况的“保护”措施。在这种情况下,这可能会在getRoot()等方法中引起无限递归错误。将节点设为其自己的祖父或孙辈是使用此树节点组件的明显错误用法,因此不值得为了性能下降而进行递归验证。