validaide / html-builder
PHP Library providing a fluent interface to generate small snippets of HTML
Requires
- php: ^8.4
- exercise/htmlpurifier-bundle: ^4.0
Requires (Dev)
- ext-tidy: *
- brianium/paratest: ^6.4
- jetbrains/phpstorm-attributes: ^1.0
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^9.0
- rector/rector: ^0.17.7
This package is auto-updated.
Last update: 2026-05-17 15:52:05 UTC
README
Validaide's HTML builder is a small library with a fluent interface to generate snippets of HTML code.
Introduction
Alright, so some might say: "Why in God's name would you need such a thing!?". And indeed, we have, I don't know, awesome stuff like Twig, right!? And you are right! I ❤️ Twig! But in turns out our code base still finds itself with small helper methods that generate tiny snippets of HTML.
Take the example below:
public function userStateToIcon(User $user): string { return sprintf('<span class="%s" id="%s" data-username="%s"></span>', strtolower($user->getState()), $user->getId(), $user->getUsername()): }
Now, despite that the above can be optimized still, the last return statement is the one we are trying to simplify:
public function userStateToIcon(User $user): HTMLTag { return HTML::create('span') ->class(strtolower($user->getState()) ->id($user->getId()) ->attr('data-username',$user->getUsername()); }
Now, in number of characters written, it is not necessarily faster, but it will ensure:
- Valid HTML is generated
- Safe HTML is generated
- Easier modification of the 'HTML' being built afterwards
Installation
Our big friend Composer to the rescue using Packagist of course:
composer require validaide/html-builder
❤️ Composer ❤️ Packagist
Examples
- Plain tag:
HTML::create('span')
<span></span>
- Plain tag with content:
HTML::create('h1')->text('Heading 1');
<h1>Heading 1</h1>
- Nested tags:
HTML::create('div')->id('div-1)->tag('div')->id('div-2);
<div id="div-1"><div id="div-2"></div></div>