2017 © Pedro Peláez
 

library html5

Create dynamic, valid HTML5 markup with a simple an intuitive PHP API

image

canteen/html5

Create dynamic, valid HTML5 markup with a simple an intuitive PHP API

  • Friday, October 31, 2014
  • by bigtimebuddy
  • Repository
  • 4 Watchers
  • 4 Stars
  • 5,531 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 2 Forks
  • 0 Open issues
  • 8 Versions
  • 3 % Grown

The README.md

Canteen HTML5

Create dynamic, well-formatted HTML5 markup with a simple an intuitive PHP API. This is a fork/rewrite of the Gagawa project. CanteenHTML5 is a concise, flexible and easy to remember API which makes it possible to create simple markup (such as a link) or more complex structures (such a table, document or nested list). All tags and attribute names are validated against the current HTML5 specification., (*1)

For documentation of the codebase, please see Canteen HTML5 docs., (*2)

Requirements

This library requires a webserver running PHP 5.3+. Also, the root namespace for the library is Canteen\HTML5., (*3)

Installation

Install is available using Composer., (*4)

composer require canteen/html5 dev-master

Including using the Composer autoloader., (*5)

require 'vendor/autoload.php';

Usage

Basic

To create an HTML node, simply call global html method, passing in the tag name and then any attributes., (*6)

// Enable the global use of html()
Canteen\HTML5\HTML5::useGlobal();

// Turn on autoloading if not using composer's autoloading
Canteen\HTML5\HTML5::autoload();

echo html('img src=home.jpg');
echo html('img', 'src=home.jpg'); 
echo html('img', array('src'=>'home.jpg')); 

All of these examples would output:, (*7)

<img src="home.jpg" />

Adding Attributes

There are dfferent ways to add attributes for HTML container nodes such as <p>, <div>, or in the example below, <nav>., (*8)

  1. Part of the tag, (*9)

    echo html('nav title="Navigation" class=main', 'Welcome');
    
  2. As an associative array, (*10)

    echo html('nav', 'Welcome', array('title'=>'Navigation', 'class'=>'main'));
    
  3. As a shorthand string, (*11)

    echo html('nav', 'Welcome', 'title="Navigation" class=main');
    
  4. As an property methods, (*12)

    $nav = html('nav', 'Welcome');
    $nav->class = 'main';
    $nav->title = 'Navigation';
    echo $nav;
    

All of these examples output the same markup:, (*13)

<nav title="Navigation" class="main">Welcome</nav>

Adding Nested Elements

Any HTML5 container tags (such as <p>, <span>, or <div>) can have child elements. These elements can be strings or other HTML5 element objects., (*14)

$label = html('span', 'Website!');
$link = html('a', $label);
$link->href = 'http://example.com';
echo $link; 

Alternatively, use the addChild method for any container tag., (*15)

$link = html('a');
$link->href = 'http://example.com';
$link->addChild(html('span', 'Website!'));
echo $link;

Or appendTo to target a container to be added to:, (*16)

$link = html('a');
$link->href = 'http://example.com';
html('span', 'Website!')->appendTo($link);
echo $link;

All examples would output:, (*17)

<a href="http://example.com"><span>Website!</span></a> 

CSS Selectors

Tag names can optionally have CSS-style class and id selectors:, (*18)

echo html('a#example'); //<a id="example"></a>
echo html('span.small'); //<span class="small"></span>
echo html('span.small.label'); //<span class="small label"></span>
echo html('span#example.small.label'); //<span id="example" class="small label"></span>

API Documentation

For self-closing elements (e.g. <br>, <img>)

html($tag, $attributes=null);
  • $tag {string} The name of the valid HTML5 element which can contain CSS selectors or short-hand attribute string.
  • $attributes {array | string} (optional) Collection of element attributes

Returns a Canteen\HTML5\Node object., (*19)

Node Methods

  • setAttribute($name, $value) Set an attribute by name and value.
  • setAttributes($values) Set an associative array of name/value pairs.
  • setData($name, $value) Set data-* fields on the HTML5 element.
  • getData($name) Get the data-* field on the HTML5 element.
  • appendTo(NodeContainer $container) Add the element to the end of a container element.
  • prependTo(NodeContainer $container) Add the element to the beginning of a container element.

For container HTML elements (e.g. <p>, <div>)

html($tag, $contents=null, $attributes=null);
  • $tag {string} The name of the valid HTML5 element which can contain CSS selectors or short-hand attribute string.
  • $contents {string | Node | NodeContainer} (optional) The string of the contents of the tag, or another element created by html()
  • $attributes {array | string} (optional) Collection of element attributes

Returns a Canteen\HTML5\NodeContainer object., (*20)

NodeContainer Methods (extends Node)

  • addChild($node) Add a Node object to the bottom of the collection of nodes
  • addChildAt($node, $index) Add a Node object at a specific zero-based index
  • removeChild($node) Remove a particular node from the container
  • removeChildAt($index) Remove a node by zero-based index
  • removeChildren() Remove all children from the container
  • getChildren() Get the collection of all Node objects
  • getChildAt($index) Get a Node object at a specific index

Additional Components

Document

The Document object is used for creating a bare-bones HTML5 document., (*21)

Canteen\HTML5\Document($title='', $charset='utf-8', $beautify=false);
  • $title {string} (optional) The title of the document
  • $charset {string} (optional) The HTML character set to use
  • $beautify {boolean} (optional) If the output should be an indented work of art.

Properties, (*22)

  • head {NodeContainer} The document's <head> element
  • body {NodeContainer} The document's <body> element
  • title {NodeContainer} The document's <title> element
    use Canteen\HTML5\Document;
    $doc = new Document('Untitled');
    $doc->head->addChild(html('script src=main.js'));
    $doc->body->addChild(html('div#frame'));
    echo $doc;

SimpleList

The SimpleList for conveniently creating <ul> and <ol> elements., (*23)

Canteen\HTML5\SimpleList($elements, $attributes=null, $type="ul");
  • $elements {array} The collection of strings or other HTML elements
  • $attributes {array | string} (optional) Collection of element attributes
  • $type {string} (optional) A value of either "ul" or "ol"

Table

The Table object is used for creating <table> elements., (*24)

Canteen\HTML5\Table($data, $headers=null, $checkbox=null);
  • $data {array} The collection of associative-arrays with key/value pairs
  • $headers {array} (optional) The names of the header labels
  • $checkbox {string} (optional) The name of the key name in the data to replace with a checkbox, for instance "id"
// Create a sample table with some rows of dummy data
$table = new Table(
    array(
        array('id'=>1, 'first'=>'James', 'last'=>'Smith'),
        array('id'=>2, 'first'=>'Mary', 'last'=>'Denver'),
        array('id'=>3, 'first'=>'Charlie', 'last'=>'Rose')
    ),
    array('ID', 'First Name', 'Last Name')
);

Rebuild Documentation

This library is auto-documented using YUIDoc. To install YUIDoc, run sudo npm install yuidocjs. Also, this requires the project CanteenTheme be checked-out along-side this repository. To rebuild the docs, run the ant task from the command-line., (*25)

ant docs

License

Copyright (c) 2013 Matt Karl, (*26)

Released under the MIT License., (*27)

The Versions

31/10 2014

dev-master

9999999-dev http://github.com/Canteen/CanteenHTML5

Create dynamic, valid HTML5 markup with a simple an intuitive PHP API

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

html tags markup html5 document

31/10 2014

1.1.0

1.1.0.0 http://github.com/Canteen/CanteenHTML5

Create dynamic, valid HTML5 markup with a simple an intuitive PHP API

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

html tags markup html5 document

31/10 2014

1.1.1

1.1.1.0 http://github.com/Canteen/CanteenHTML5

Create dynamic, valid HTML5 markup with a simple an intuitive PHP API

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

html tags markup html5 document

31/10 2014

1.1.2

1.1.2.0 http://github.com/Canteen/CanteenHTML5

Create dynamic, valid HTML5 markup with a simple an intuitive PHP API

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

html tags markup html5 document

31/10 2014

1.1.3

1.1.3.0 http://github.com/Canteen/CanteenHTML5

Create dynamic, valid HTML5 markup with a simple an intuitive PHP API

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

html tags markup html5 document

31/10 2014

1.1.4

1.1.4.0 http://github.com/Canteen/CanteenHTML5

Create dynamic, valid HTML5 markup with a simple an intuitive PHP API

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

html tags markup html5 document

12/10 2013

1.0.0

1.0.0.0 http://github.com/Canteen/CanteenHTML5

Create dynamic, valid HTML5 markup with a simple an intuitive PHP API

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

html tags markup html5 document

12/10 2013

1.0.1

1.0.1.0 http://github.com/Canteen/CanteenHTML5

Create dynamic, valid HTML5 markup with a simple an intuitive PHP API

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

html tags markup html5 document