PHP Classes

File: README.md

Recommend this page to a friend!
  Classes of William   neoshiftlab PHP Tree Data Structure   README.md   Download  
File: README.md
Role: Documentation
Content type: text/markdown
Description: Documentation
Class: neoshiftlab PHP Tree Data Structure
Create and manipulate trees of data values
Author: By
Last change:
Date: 2 years ago
Size: 2,689 bytes
 

Contents

Class file image Download

<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