PHPackages                             naucon/htmlbuilder - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. naucon/htmlbuilder

ActiveLibrary

naucon/htmlbuilder
==================

A package for php to generate html markup with object representation but without the overhead of domXML or SimpelXML.

1.0.3(4y ago)1254.8k—7.5%32MITPHPPHP &gt;=5.3.0

Since Dec 13Pushed 4y ago1 watchersCompare

[ Source](https://github.com/naucon/HtmlBuilder)[ Packagist](https://packagist.org/packages/naucon/htmlbuilder)[ Docs](https://github.com/naucon/HtmlBuilder)[ RSS](/packages/naucon-htmlbuilder/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (2)Versions (5)Used By (2)

naucon HTML Builder Package
===========================

[](#naucon-html-builder-package)

About
-----

[](#about)

A package for php to generate html markup with object representation but without the overhead of domXML or SimpelXML. The main purpose is to render html in view helpers.

### Features

[](#features)

- achor
- break
- button
- div
- fieldset
- fieldset legend
- form
- headline
- image
- input
    - button
    - checkbox
    - file
    - hdden
    - image
    - password
    - radio
    - submit
    - text
- label
- list
    - list item
    - unordered list
    - ordered list
- meta
    - author
    - description
    - keywords
    - robots
- paragraph
- preformated text
- select
    - options
- span
- table
    - thead
    - tbody
    - tfoot
    - tr
        - td
        - th
- textarea
- title

### Limitations

[](#limitations)

At the moment the library do not consider different html standards like html4.01, xhtml, html5 etc. Also some html markup notations are missing.

### Compatibility

[](#compatibility)

- PHP5.3

Installation
------------

[](#installation)

install the latest version via composer

```
composer require naucon/htmlbuilder

```

Usage
-----

[](#usage)

### Basics

[](#basics)

First create a class instance of `HtmlBuilder`. Than create a class intance of `HtmlElement` or `HtmlElementInterface`. The Instance is given the tag `h2` as first parameter and the content of the element as second parameter.

```
use Naucon\HtmlBuilder\HtmlBuilder;
$htmlBuilder = new HtmlBuilder();

use Naucon\HtmlBuilder\HtmlElement;
$htmlElement = new HtmlElement('h2', 'My Headline');
echo $htmlBuilder->render($htmlElement);

// Output:
// My Headline

```

You can use concrete html elements like headlines, forms, tables and more. In this example we create a instance of `HtmlHeadline` to render a `` html element.

```
use Naucon\HtmlBuilder\HtmlHeadline;
$headline = new HtmlHeadline('My Headline', 2);
echo $htmlBuilder->render($headline);

// Output:
// My Headline

```

### Content

[](#content)

A content of the html elements contain can either be set over the constructor or the method `setContent()`.

```
$htmlElementObject = new HtmlDiv('foo');
echo $htmlBuilder->render($htmlElementObject);

// Output:
// foo

$htmlElementObject = new HtmlDiv();
$htmlElementObject->setContent('foo');
echo $htmlBuilder->render($htmlElementObject);

// Output:
// foo

```

A html element instance can also be set as content.

```
$htmlElementObject = new HtmlDiv();
$htmlElementObject->setContent(new HtmlHeadline('Main headline', 1));
echo $htmlBuilder->render($htmlElementObject);

// Output:
// Main headline

```

To append a content use the method `addContent()`.

```
$htmlElementObject = new HtmlDiv('foo');
$htmlElementObject->addContent(new HtmlHeadline('Main headline', 1));
echo $htmlBuilder->render($htmlElementObject);

// Output:
// fooMain headline

```

### Attributes

[](#attributes)

Every instance of html element have the following methods access and modify attributes:

`getAttributes()` html element attributes with key-value-pairs `hasAttributes()` html element has attributes `setAttributes()` html element attributes with key-value-pairs `getAttribute($key)` return html element attribute value of a given key `hasAttribute($key)` has html element attribute of a given key `setAttribute($key, $value=null)` set a html element attribute value of a given key `appendAttribute($key, $value=null, $seperater=null)` append a html element attribute value of a given key

Example:

```
$htmlElementObject = new HtmlDiv('foo');
$htmlElementObject->setAttribute('id', 'bar');
echo $htmlBuilder->render($htmlElementObject);

// Output:
// foo

$htmlElementObject = new HtmlDiv('foo');
$htmlElementObject->setAttribute('class', 'btn');
$htmlElementObject->appendAttribute('class', 'primary', ' ');
echo $htmlBuilder->render($htmlElementObject);

// Output:
// foo

```

Instances of `HtmlElementUniversalAbstract`, such as achor, break, button, div, fieldset, fieldset legend, form, headline, image, input, label, list, paragraph, preformated text, select, span, textarea have the following getter-/setter-methodes to access and modify attributes:

`getId()`, `setId($id)`, `getClass()`, `setClass($class)`, `getStyle()`, `setStyle($style)`, `getTitle()`, `setTitle($title)`, `getOnClick()`, `setOnClick($event)`, `getOnDoubleClick()`, `setOnDoubleClick($event)`, `getOnMouseDown()`, `setOnMouseDown($event)`, `getOnMouseUp()`, `setOnMouseUp($event)`, `getOnMouseOver()`, `setOnMouseOver($event)`, `getOnMouseMove()`, `setOnMouseMove($event)`, `getOnMouseOut()`, `setOnMouseOut($event)`, `getOnKeyPress()`, `setOnKeyPress($event)`, `getOnKeyDown()`, `setOnKeyDown($event)`, `getOnKeyUp()`, `setOnKeyUp($event)`

Some html elements also have special getter-/setter-methodes to access and modify attributes. For Example anchor (href, target, name, onblur, onfocus), button (type, name, value, tabindex, disabled, onblur, onfocus), image (src, alt, width, height, loading), meta (name), label (for), form (action, method, target, enctype, autocomplete, onreset, onsubmit), input (type, name, disabled, readonly, onblur, onchange, onfocus).

### Nested elements

[](#nested-elements)

Nasted html elements can set with the `addChildElement()` method.

```
use Naucon\HtmlBuilder\HtmlDiv;
$htmlElementObject = new HtmlDiv();
$htmlElementObject->setClass('level1');

$htmlElementChildObject = new HtmlDiv();
$htmlElementChildObject->setClass('level11');
$htmlElementObject->addChildElement($htmlElementChildObject);

$htmlElementChild2Object = new HtmlDiv('Home');
$htmlElementChild2Object->setClass('level111');

$htmlElementChildObject->addChildElement($htmlElementChild2Object);
echo $htmlBuilder->render($htmlElementObject);

// Output:
//
//
// Home
//
//

```

Some Html Element with nasted elements by design have a particular method to set options oder item.

Like the select element with options...

```
$htmlElementObject = new HtmlSelect('foo');
$htmlElementObject->addOption('Ms.', 'MS');
$htmlElementObject->addOption('Mr.', 'MR', true);
echo $htmlBuilder->render($htmlElementObject);

// Output:
//
// Ms.
// Mr.
// ';

```

... or ordered Lists (ol) with list items (li) ...

```
$htmlElementObject = new HtmlListOrdered();
$htmlElementObject->addItem('foo');
$htmlElementObject->addItem('Bar', 'bar');
echo $htmlBuilder->render($htmlElementObject);

// Output:
//
// foo
// Bar
//

```

... or unordered Lists (ul) with list items (li) ...

```
$htmlElementObject = new HtmlListUnordered();
$htmlElementObject->addItem('foo');
$htmlElementObject->addItem('Bar', 'bar');
echo $htmlBuilder->render($htmlElementObject);

// Output:
//
// foo
// Bar
//

```

... or tables.

```
use Naucon\HtmlBuilder\HtmlTable;

$htmlTable = new HtmlTable();
$htmlTableHeader = $htmlTable->addHeader();
$htmlTableRow = $htmlTableHeader->addRow();
$htmlTableRow->addHeader('fruit')
    ->addHeader('quantity');

$htmlTableBody = $htmlTable->addBody();
$htmlTableRow = $htmlTableBody->addRow();
$htmlTableRow->addData('apple')
    ->addData('3');

$htmlTableRow = $htmlTableBody->addRow();
$htmlTableRow->addData('banana')
    ->addData('4');

$htmlTableRow = $htmlTableBody->addRow();
$htmlTableRow->addData('orange')
    ->addData('2');

$htmlTableFooter = $htmlTable->addFooter();
$htmlTableRow = $htmlTableFooter->addRow();
$htmlTableRow->addData('total')
    ->addData('9');

echo $htmlBuilder->render($htmlTable);

// Output:
//
//
//
//       fruit
//       quantity
//
//
//
//
//       apple
//       3
//
//
//       banana
//       4
//
//
//       orange
//       2
//
//
//
//
//       total
//       9
//
//
//

```

### Render

[](#render)

Html elements can be rendered in the following ways:

With `render()` the complete html element with his content will be rendered.

```
$htmlElementObject = new HtmlDiv(new HtmlHeadline('Main headline', 1));
echo $htmlBuilder->render($htmlElementObject);

// Output:
// Main headline

```

With `renderContent()` only the content will be rendered.

```
$htmlElementObject = new HtmlDiv(new HtmlHeadline('Main headline', 1));
echo $htmlBuilder->renderContent($htmlElementObject);

// Output:
// Main headline

```

With `renderStartTag()` only the start tag of the html element will be rendered.

```
$htmlElementObject = new HtmlDiv(new HtmlHeadline('Main headline', 1));
echo $htmlBuilder->renderStartTag($htmlElementObject);

// Output:
//

```

With `renderEndTag()` only the end tag of the html element will be rendered.

```
$htmlElementObject = new HtmlDiv(new HtmlHeadline('Main headline', 1));
echo $htmlBuilder->renderEndTag($htmlElementObject);

// Output:
//

```

Roadmap
-------

[](#roadmap)

- constant to define HTML standard

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity37

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor1

Top contributor holds 81.8% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~680 days

Total

4

Last Release

1769d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/a1342e3921a59ade40b08d9db1ad9ef0b47ff8ed86714aad2894f9f2ada270ee?d=identicon)[naucon](/maintainers/naucon)

---

Top Contributors

[![naucon](https://avatars.githubusercontent.com/u/1407477?v=4)](https://github.com/naucon "naucon (9 commits)")[![svs-valiton](https://avatars.githubusercontent.com/u/9139405?v=4)](https://github.com/svs-valiton "svs-valiton (2 commits)")

---

Tags

htmlbuildermarkupgeneraterendercreate

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/naucon-htmlbuilder/health.svg)

```
[![Health](https://phpackages.com/badges/naucon-htmlbuilder/health.svg)](https://phpackages.com/packages/naucon-htmlbuilder)
```

###  Alternatives

[s9e/text-formatter

Multi-purpose text formatting and markup library. Plugins offer support for BBCodes, Markdown, emoticons, HTML, embedding third-party media (YouTube, etc...), enhanced typography and more.

2413.1M29](/packages/s9e-text-formatter)[netcarver/textile

Textile markup language parser

2311.5M16](/packages/netcarver-textile)[consoletvs/invoices

Generate PDF invoices for your customers in laravel

455275.5k](/packages/consoletvs-invoices)[okipa/laravel-table

Generate tables from Eloquent models.

56752.8k](/packages/okipa-laravel-table)[aspose-cloud/aspose-words-cloud

Open, generate, edit, split, merge, compare and convert Word documents. Integrate Cloud API into your solutions to manipulate documents. Convert PDF to Word (DOC, DOCX, ODT, RTF and HTML) and in the opposite direction.

32157.4k](/packages/aspose-cloud-aspose-words-cloud)[phug/phug

Pug (ex-Jade) facade engine for PHP, HTML template engine structured by indentation

67292.2k13](/packages/phug-phug)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
