Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

10 Commits

Repository files navigation

THIS REPO IS UNMAINTAINED / A NEW MAINTAINER IS NEEDED

HTMLBuilder

Lightweight utility class for building small snippets of HTML in PHP.

Examples

All examples expect a use Comsolit\HTMLBuilder; statement.

Link tag with inner Text

$builder = newHTMLBuilder('a', 'comsolit AG');
$builder->addAttribute('href', 'https://www.comsolit.com');
$this->assertEquals(
'<a href="https://www.comsolit.com">comsolit AG</a>',
$builder->build()
);

Input tag without closing tag

$builder = newHTMLBuilder('input');
$builder
->setVoid() // don't build a closing tag
->addAttribute('type', 'text')
->addAttribute('name', 'some_name');
$this->assertEquals(
'<input type="text" name="some_name"/>',
$builder->build()
);

Tag with inner text

$builder = newHTMLBuilder('span', 'my text');
$this->assertEquals(
'<span>my text</span>',
$builder->build()
);

Using the magic __toString() method

$builder = newHTMLBuilder('span');
$this->assertEquals(
$builder->build(),
(string)$builder
);

Wrap tags

$inputBuilder = (newHTMLBuilder('input'))->setVoid();
$labelBuilder = newHTMLBuilder('label', $inputBuilder);
$this->assertEquals(
'<label><input/></label>',
(string)$labelBuilder
);

Encapsulate tags

$inputBuilder = (newHTMLBuilder('input'))->setVoid();
$labelBuilder = $inputBuilder->encapsulate('label');
$this->assertEquals(
'<label><input/></label>',
(string)$labelBuilder
);

Set attribute conditionally

$builder = (newHTMLBuilder('input'))
->setVoid()
->addAttribute('type', 'checkbox')
->addAttributeIf(1 + 1 === 3, 'disabled', 'disabled')
->addAttributeIf(1 + 1 === 2, 'checked', 'checked');
$this->assertEquals(
'<input type="checkbox" checked="checked"/>',
(string)$builder
);

Special method for classes

$builder = (newHTMLBuilder('span'))
->addClass('once')
->addClass('multiple')
->addClass('multiple');
$this->assertEquals(
'<span class="once multiple"></span>',
(string)$builder
);

Add multiple children

$builder = newHTMLBuilder('ul');
for ($i = 0; $i < 2; ++$i) {
$builder->addChild(newHTMLBuilder('li', (string)$i));
}
$this->assertEquals(
'<ul><li>0</li><li>1</li></ul>',
(string)$builder
);

Related Packages

We've used this builder already in three projects and than evaluated other packages to decide whether we want to publish this builder or not:

About

Lightweight utility class for building small snippets of HTML in PHP

Topics

Resources

Stars

3 stars

Watchers

9 watching

Forks

Releases

Packages

Used by

Contributors

Languages