Validaide's HTML builder is a small library with a fluent interface to generate snippets of HTML code.
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
Our big friend Composer to the rescue using Packagist of course:
composer require validaide/html-builder
❤️ Composer ❤️ Packagist
- 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>