HTML 5 generation library

0.1.1 2017-10-06 14:34 UTC

This package is auto-updated.

Last update: 2024-06-02 23:35:23 UTC


A very simple HTML 5 generation library.

Build Status Coverage Status Latest Stable Version License


This library is installable via Composer:

composer require brick/html


This library requires PHP 7.1 or later.

Project status & release process

This library is still under development.

The current releases are numbered 0.x.y. When a non-breaking change is introduced (adding new methods, optimizing existing code, etc.), y is incremented.

When a breaking change is introduced, a new 0.x version cycle is always started.

It is therefore safe to lock your project to a given release cycle, such as 0.1.*.

If you need to upgrade to a newer release cycle, check the release history for a list of changes introduced by each further 0.x.0 version.


This library contains a single class, Tag, that represents an HTML tag. You construct a Tag using a tag name:

use Brick\Html\Tag;

$div = new Tag('div');


You can pass an optional associative array of attributes to the constructor:

$div = new Tag('div', [
    'id' => 'main',
    'class' => 'block',

Or you can set attributes later:

    'id' => 'main',
    'class' => 'block',


$tag->setAttribute('id', 'main')
    ->setAttribute('class', 'block');

You can also remove attributes:



You can set the content of a Tag, provided that it's not a void tag such as <br>, <input>, etc. If you try to modify the content of a void tag, you'll get a LogicException.

You can set or append a plain text content:

$tag->setTextContent('Hello, world!');
$tag->appendTextContent("\nWhat's up?");

Or set/append a HTML content:

$tag->setHtmlContent('Hello, <b>world!</b>');
$tag->appendHtmlContent("<br>What's up?");

You can also append another Tag:


You can remove the content of a Tag:


You can check if a Tag has an empty content:

$tag->isEmpty(); // boolean

Rendering a tag

You can render a tag by using its render() method, or just by casting it to string:

echo $tag; // will output something like: <div id="main">Hello, world!</div>


All texts (attributes, content) are expected to be valid UTF-8.