PHP HTML handler the OOP way
The best way to use this package is through Composer:
composer require italystrap/html
use ItalyStrap\HTML\AttributesInterface;
$sut = new AttributesInterface();
$sut->add( 'context', [
'class' => 'color-primary',
'id' => 'unique_id',
] );
// ' class="color-primary" id="unique_id"'
echo $sut->render( 'context' );
$sut->add( 'another_context', [
'class' => '', // This will be skipped because empty
'attr1' => null, // This will be skipped because null
'attr2' => false, // This will be skipped because false
'attr3' => 0, // This will be skipped because 0 is also false
'id' => 'unique_id',
] );
// ' id="unique_id"'
echo $sut->render( 'another_context' );
Attributes can be also used with the get_attr()
and get_attr_e()
helpers functions under the same namespece.
use function ItalyStrap\HTML\{get_attr, get_attr_e};
// Return ' class="someClass"'
$attr = get_attr( 'context', ['class' => 'someClass'] );
// Echo ' class="someClass"'
get_attr_e( 'context', ['class' => 'someClass'] );
Build list of attributes into a string and apply contextual filter on string:
use function ItalyStrap\HTML\{get_attr, get_attr_e};
$attr = [
'id' => 'unique_id',
'class' => 'some_class',
];
$output = get_attr( $context, $attr, false );
// id="unique_id" class="some_class"
printf(
'<span%s>Title</span>',
$output
);
or
<span<?php get_attr_e( $context, $attr, true ) ?>>Title</span>
// <span id="unique_id" class="some_class">Title</span>
use function ItalyStrap\HTML\{open_tag, close_tag, open_tag_e, close_tag_e};
\ItalyStrap\HTML\Tag::$is_debug = false; // If you don't want tu print debug comments
$open = \ItalyStrap\HTML\open_tag( 'test', 'div', [ 'class' => 'btn-primary' ] );
$this->assertStringContainsString( '<div class="btn-primary">', $open, '' );
$closed = \ItalyStrap\HTML\close_tag( 'test' );
$this->assertStringContainsString( '</div>', $closed, '' );
\ItalyStrap\HTML\Tag::$is_debug = false;
\ItalyStrap\HTML\open_tag_e( 'test', 'div', [ 'class' => 'btn-primary' ] );
echo 'Content';
\ItalyStrap\HTML\close_tag_e( 'test' );
$this->expectOutputString( '<div class="btn-primary">Content</div>' );
use ItalyStrap\HTML\{Tag,AttributesInterface};
Tag::$is_debug = true; // This will print comment <! some comment> around the output for debugging, you can see it with ctrl + u key in the browser
$sut = new Tag( new AttributesInterface() );
// <div class="someClass">Some content inside HTML div tags</div>
echo $sut->open( 'some_context', 'div', [ 'class' => 'someClass' ] );
echo 'Some content inside HTML div tags';
echo $sut->close( 'some_context' );
// <input type="text"/>
echo $sut->void( 'some_other_context', 'input', [ 'type' => 'text' ] );
use ItalyStrap\HTML\{Tag,AttributesInterface};
$context = 'some_context';
\add_filter("italystrap_{$context}_tag", function( string $tag, string $context, Tag $obj) {
// Do some staff with $tag
$new_tag = 'span';
return $new_tag;
}, 10, 3);
$sut = new Tag( new AttributesInterface() );
echo $sut->open( 'some_context', 'div', [ 'class' => 'someClass' ] );
echo 'Some content inside HTML div tags';
echo $sut->close( 'some_context' );
// <span class="someClass">Some content inside HTML div tags</span>
See in tests folder for more advance usage.
All feedback / bug reports / pull requests are welcome.
Copyright (c) 2019 Enea Overclokk, ItalyStrap
This code is licensed under the MIT.
- Maintained under the Semantic Versioning Guide
TODO