PHP Classes

neoshiftlab PHP Tree Data Structure: Create and manipulate trees of data values

Recommend this page to a friend!
  Info   Documentation   View files Files   Install with Composer Install with Composer   Download Download   Reputation   Support forum   Blog    
Ratings Unique User Downloads Download Rankings
Not enough user ratingsTotal: 51 All time: 10,692 This week: 51Up
Version License PHP version Categories
neoshiftlab-tree 1.0MIT/X Consortium ...8Algorithms, Data types, PHP 8
Description 

Author

This package can create and manipulate trees of data values.

It can create a tree of data value nodes by passing an array to the class constructor function.

The package can also perform several types of operations with tree data notes like:

- Setting each node primary and parent keys to finding nodes by key

- Return a data structure that is suitable to serialize into a JSON string

- Use objects as tree nodes

Picture of William
Name: William <contact>
Classes: 1 package by
Country: France France

Documentation

<p align="center"> <img src="/art/banner.png" alt="Tree Logo"> </p>

About Tree

Run tests Latest Stable Version

This package provides a tree structure.

Installation

This package requires php:^8.0. You can install it via composer:

composer require neoshiftlab/tree

Usage

Tree instance need items to forge the expected data structure.

How to forge a tree with array as items ?

By default, a tree expect id and parentId fields in give items like this :

use Neoshiftlab\Tree\Tree;

$items = [
    ['id' => 1, 'parentId' => null, 'username' => 'Robert'],
    ['id' => 2, 'parentId' => 1, 'username' => 'John'],
    ['id' => 3, 'parentId' => 1, 'username' => 'Jane'],
];

$tree = new Tree($items);

// Get Robert's children
$robert = $tree->getNodeById(1); // Return the node representing Robert
$robert->getChildren(); // Return an array containing John & Jane

// Get Jane's parent
$jane = $tree->getNodeById(3);
$jane->getParent(); // Return Robert's node

How to forge a tree with custom fields ?

You can customize the parentKey and the primaryKey like this :

use Neoshiftlab\Tree\Tree;

$items = [
    [
        'uuid' => 'b08f82b9-e8cc-44fb-b99a-4929bfcf02a4', 
        'parentUuid' => null, 
        'username' => 'Robert',
    ],
    [
        'uuid' => 'eaaf3215-17ba-4779-b444-d4a8203f1096', 
        'parentUuid' => 'b08f82b9-e8cc-44fb-b99a-4929bfcf02a4', 
        'username' => 'John',
    ],
];

$tree = new Tree($items, 'parentUuid', 'uuid');

How to serialize a tree to json ?

use Neoshiftlab\Tree\Tree;

$items = [
    ['id' => 1, 'parentId' => null, 'name' => 'Chicken'],
    ['id' => 2, 'parentId' => 1, 'name' => 'Egg'],
];

$tree = new Tree($items);

$json = json_encode($tree);

The result of the json_encode is a string with contains :

{
    "primaryKey": "id",
    "parentKey": "parentId",
    "nodes": [
        {"id": 1, "parentId": null, "name": "Chicken"},
        {"id": 2, "parentId": 1, "name": "Egg"}
    ]
}

How to forge a tree with object as items ?

You can passe object as items with expected id and parentId public property like this :

use Tests\Artifact\Person;
use Neoshiftlab\Tree\Tree;

$items = [
    new Person(1, null, 'Chicken'),
    new Person(2, 1, 'Egg'),
];

$tree = new Tree($items);

$chicken = $tree->getNodeById(1);
$chicken->getChildren(); // Return Egg's node

  Files folder image Files (12)  
File Role Description
Files folder image.github (1 directory)
Files folder imageart (1 file)
Files folder imagesrc (2 files)
Files folder imagetests (2 files, 1 directory)
Accessible without login Plain text file CHANGELOG.md Data Auxiliary data
Accessible without login Plain text file composer.json Data Auxiliary data
Accessible without login Plain text file CONTRIBUTING.md Data Auxiliary data
Accessible without login Plain text file phpunit.xml Data Auxiliary data
Accessible without login Plain text file README.md Doc. Documentation

  Files folder image Files (12)  /  .github  
File Role Description
Files folder imageworkflows (1 file)

  Files folder image Files (12)  /  .github  /  workflows  
File Role Description
  Accessible without login Plain text file run_tests.yml Data Auxiliary data

  Files folder image Files (12)  /  art  
File Role Description
  Accessible without login Image file banner.png Data Auxiliary data

  Files folder image Files (12)  /  src  
File Role Description
  Plain text file Node.php Class Class source
  Plain text file Tree.php Class Class source

  Files folder image Files (12)  /  tests  
File Role Description
Files folder imageArtifact (1 file)
  Plain text file NodeTest.php Class Class source
  Plain text file TreeTest.php Class Class source

  Files folder image Files (12)  /  tests  /  Artifact  
File Role Description
  Plain text file Person.php Class Class source

The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page.
Install with Composer Install with Composer
 Version Control Unique User Downloads Download Rankings  
 100%
Total:51
This week:0
All time:10,692
This week:51Up