validaide/html-builder

PHP Library providing a fluent interface to generate small snippets of HTML

7.0.0 2024-04-22 11:30 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:

  1. Valid HTML is generated
  2. Safe HTML is generated
  3. 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

  1. Plain tag:
    HTML::create('span')
    <span></span>
  2. Plain tag with content:
    HTML::create('h1')->text('Heading 1');
    <h1>Heading 1</h1>
  3. Nested tags:
    HTML::create('div')->id('div-1)->tag('div')->id('div-2);
    <div id="div-1"><div id="div-2"></div></div>