HTML Builder
The HTML Builder library is a small helper to easily and robustly build HTML.
Installation
Install the bundle with composer:
composer require 21torr/html-builder
Usage
First you create your HtmlElements, then you generate the HTML using the builder:
use Torr\HtmlBuilder\Builder\HtmlBuilder;
$element = new HtmlElement(/* ... */);
$builder = new HtmlBuilder();
$builder->build($element);
You can either keep the builder as service, or recreate it every time. The constructor is supposed to be cheap.
Element
To create a new HtmlElement:
use Torr\HtmlBuilder\Node\HtmlElement;
$element = new HtmlElement("a", [
"href" => "https://21torr.com",
], $content);
As second parameter, you can either pass an array or HtmlAttributes.
The third parameter is the content, see below for more info.
Attributes
You can always either pass an array or use the HtmlAttributes object directly.
use Torr\HtmlBuilder\Node\HtmlAttributes;
$attributes = new HtmlAttributes([
"href" => "https://21torr.com",
]);
$attributes->set("data-test", "abc");
$attributes->get("data-test");
$attributes->get("data-test", $defaultValue);
$attributes->all();
// see below
$attributes->getClassList();
Class List
There is a special wrapper for class lists, that mirrors the DOM class list:
use Torr\HtmlBuilder\Node\ClassList;
$classList = new ClassList("existing classes");
$classList->add("class1", "class2");
$classList->remove("class1", "class2");
$classList->contains("class1");
// add if not exist, otherwise remove
$classList->toggle("class1", "class2");
// special setter
$classList->set("class1", true); // adds
$classList->set("class1", false); // removes
It automatically deduplicates classnames.
Content
You can pass content to the elements. Every element receives an array of content elements.
As content, you can either add
- a
string(will automatically be HTML escaped) - another
HtmlElement - a
SafeMarkup(string $html)(will use the$htmlstring directly, without escaping)