Need help with html-object?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

Anahkiasen
129 Stars 18 Forks MIT License 149 Commits 5 Opened issues

Description

A set of classes to create and manipulate HTML objects abstractions

Services available

!
?

Need anything else?

Contributors list

# 32,046
PHP
JavaScr...
Laravel
jira
118 commits
# 305,630
PHP
JavaScr...
Symfony
symfony...
2 commits
# 138,120
HTML
gke
gcp
k8s
2 commits
# 58,898
HTML
Atom
Go
express...
1 commit
# 111,363
PHP
autocom...
Laravel
HTML
1 commit
# 19,027
whois-l...
php7
XML
Nette
1 commit
# 20,032
PHP
twitter...
Symfony
concret...
1 commit
# 58,367
PHP
normali...
Google
Firebas...
1 commit
# 7,979
PHP
Symfony
framewo...
httpcli...
1 commit
# 55,214
PHP
Laravel
elastic...
HTML
1 commit

HTMLObject

Build Status Latest Stable Version Total Downloads Scrutinizer Quality Score Code Coverage Support via Gittip

HTMLObject is a set of classes to create and manipulate HTML objects abstractions.

Static calls to the classes

echo Element::p('text')->class('foobar');
// 

text

$list = List::ul(array('foo', 'bar'));

$link = Link::create('#', 'Someone'); $list->getChild(0)->addClass('active')->setValue('by '.$link); //

echo Link::create('#foo', 'link')->class('btn btn-success')->blank();
// link

Extending the core classes

The core classes are meant to be extended and used to create complex patterns. All classes implement tree-crawling properties such as the following :

$element = Element::figure();

$element->nest('content') //

content

$element->nest('p', 'content') //

content

$image = Image::create('img.jpg')->alt('foo'); // foo $element->setChild($image, 'thumb');

$element->getChild('thumb') // HtmlObject\Image $element->nest(array( 'caption' => Element::figcaption()->nest(array( 'text' => Element::p('foobar'), )), ));

$element->getChild('caption.text')->getValue() // foobar // OR $element->captionText->getValue() // foobar $element->captionText->getParent(0) // figure->caption $element->captionText->getParent(1) // figure

$element->wrap('div') //

...
$element->wrapValue('div') //
...

You can see examples implementations in the examples folder.

Properties injection

If your class use properties that are at meant to be added to the final array of attributes, you can inject them using the

injectProperties
method. Say you have a
Link
class that has an
url
property, you can overwrite the method like this, and the
$this->url
will get added in the
href
attribute :
protected function injectProperties()
{
  return array(
    'href' => $this->url,
  );
}

Or if the property bears the property's name you can simply add it to the array of automatically injected properties :

protected $injectedProperties = array('href', 'title');

// Will be added as href="#foo" protected $href = '#foo';

// Will be added as title="title" protected $title = 'title';

Altering a precreated tree

HtmlObject allows to use the

open
and
close
to open tags but when your tag has children you sometimes want to open the tree at a particular point to inject data at runtime, you can do it like this :
$mediaObject = Element::div([
  'title' => Element::h2('John Doe'),
  'body'  => Element::div(),
]);

echo $mediaObject->openOn('body').'My name is John Doe'.$mediaObject->close();

John Doe

My name is John Doe

Configuration

You can change whether to follow xHMTL or HTML5 specification by doing the following :

Tag::$config['doctype'] = '{xhtml|html}';

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.