dev-master
9999999-dev
AGPL-3.0
The Requires
- php >=5.5.9
The Development Requires
Wallogit.com
2017 © Pedro Peláez
This library provides a tree structure via discrete Traits., (*1)
It is intended to be used by other libraries., (*2)
Add, acces and remove child nodes using this trait., (*3)
Optional methods to inspect the tree., (*4)
Optional attributes per node., (*5)
Optional __toString() implementation that outputs the nodes class name and its attributes., (*6)
Combines all of the above traits, (*7)
The sub-namespace ProtectedAccess contains versions of ChildrenTrait, LookupTrait and AttributesTrait where all methods are protected. This allows fine control over the public API when using the Traits in a library., (*8)
// Create a simple tree.
$root = new Node();
$root->setAttribute('name', 'root');
$a = new Node();
$a->setAttribute('name', 'a');
$root->addChild($a);
$b = new Node();
$b->setAttribute('name', 'b');
$root->addChild($b);
$c = new Node();
$c->setAttribute('name', 'c');
$root->addChild($c);
// Find a descendant with the name=b
$bAgain = $root->descendant(function ($node) {
return $node->getAttribute('name') === 'b';
});
// Get the root node of any node
$rootAgain = $bAgain->findRootNode();
// Remove a node
$bAgain->remove();
$root->removeChild($a);
$root->removeChildAt(0);
AGPL-3.0