palmtree / html
HTML component for Palmtree PHP
v6.0.0
2026-09-24 09:19 UTC
Requires
- php: >=8.3
Requires (Dev)
- ext-dom: *
- palmtree/php-cs-fixer-config: ^2.0
- phpstan/phpstan: ^2.1
- phpstan/phpstan-phpunit: ^2.0
- phpunit/phpunit: ^12.4
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Build and render HTML elements using an OOP style interface and jQuery style selectors.
Requirements
- PHP >= 7.1
Installation
Use composer to add the package to your dependencies:
composer require palmtree/html
Usage Example
<?php use Palmtree\Html\Element; $menu = new Element('ul.some-class'); $menuItems = []; $menuItems[] = [ 'label' => 'Home', 'href' => 'https://example.org', ]; $menuItems[] = [ 'label' => 'About', 'href' => 'https://example.org/about', ]; $menuItems[] = [ 'label' => 'Contact', 'href' => 'https://example.org/contact', ]; foreach ($menuItems as $item) { $a = Element::create('a[href="' . $item['href'] . '"]')->setInnerText($item['label']); $li = Element::create('li.item')->addChild($a); $li->classes[] = 'item-' . strtolower($item['label']); $menu->addChild($li); } $menu->attributes->setData('item_total', (string)count($menuItems)); $menu->attributes['aria-label'] = 'Navigation' echo $menu->render(); ?>
Renders the following HTML:
<ul class="some-class" data-item_total="3" aria-label="Navigation"> <li class="item item-home"> <a href="https://example.org">Home</a> </li> <li class="item item-about"> <a href="https://example.org/about">About</a> </li> <li class="item item-contact"> <a href="https://example.org/contact">Contact</a> </li> </ul>
Escaping
Inner text, attribute values and class names are HTML-escaped when rendered, so untrusted input can be passed
to setInnerText() and attributes safely:
$input = new Element('input'); $input->attributes['value'] = '"><script>alert(1)</script>'; echo $input->render(); // <input value=""><script>alert(1)</script>">
Use setInnerHtml() to add raw HTML. It is not escaped, so never pass untrusted input to it.
Tag and attribute names are validated rather than escaped: an \InvalidArgumentException is thrown for a name
that is not valid HTML.
License
Released under the MIT license