horde/tree

Tree rendering library

v3.0.0 2026-06-27 00:00 UTC

Requires

Requires (Dev)

None

Suggests

Provides

None

Conflicts

None

Replaces

None

LGPL-2.1-only 32765826e27c725b28eadfcb9dd234331023ae91

  • Jan Schneider <jan.woop@horde.org>
  • Chuck Hagenbuch <chuck.woop@horde.org>
  • Michael Slusarz <slusarz.woop@horde.org>

hierarchy


README

Tree data-structure and rendering library for PHP 8.1+.

Provides both a legacy PSR-0 API (Horde_Tree) and a modern PSR-4 API (Horde\Tree)

Install

composer require horde/tree

Quick Start

use Horde\Tree\Node;
use Horde\Tree\TreeBuilder;
use Horde\Tree\Renderer\ResponsiveRenderer;

$tree = (new TreeBuilder('nav'))
 ->addNode(new Node('inbox', 'Inbox', params: ['icon' => '/mail.svg', 'url' => '/mail']))
 ->addNode(new Node('unread', 'Unread (5)', parentId: 'inbox'))
 ->build();

echo (new ResponsiveRenderer())->render($tree);

Renderers

Renderer Output
HtmlRenderer Div-based HTML with row classes
SelectRenderer <option> elements for <select>
SimplehtmlRenderer Lightweight divs with [+]/[-] toggles
ResponsiveRenderer Semantic HTML5 with <details>/<summary> and ARIA (unstable)

Links

License

LGPL-2.1-only — see LICENSE.