<?php
include '../buffer_manager.class.php';
class HTML_Tags extends buffer_manager {
# a typical usage pattern:
function WriteTo($name,$data) {
$this->enter($name);
$this->out($data);
$this->leave();
}
# generic named HTML tag, content is a separate buffer
function NamedTag($name,$tag=false,$attrs='',$data=NULL) {
if(!$tag) $tag = $name;
if($attrs) $attrs = " $attrs";
$this->out("<$tag$attrs>");
$this->enter($name);
if(!is_null($data))
$this->out($data);
$this->leave();
$this->out("</$tag>");
}
# a named image template, src attribute can be written later
function NamedImage($name,$src='',$alt='',$extra='') {
$this->out('<img src="');
$this->enter($name);
if($src) $this->out($src);
$this->leave();
if($extra) $extra = " $extra";
$this->out('" alt="'.$alt.'"'.$extra.' />');
}
}
$bm = new HTML_Tags('document');
$doc_node = $bm->current(); # used for debug dump below
$bm->out('<html><head>');
$bm->enter('head'); # create buffer 'head'
$bm->NamedTag('title');
$bm->NamedTag('style','','type="text/css"');
$bm->leave(); # leave 'head'
$bm->out('</head><body>');
$bm->enter('body'); # create buffer 'body'
$NameOfPage = 'Hello world';
$bm->out("<h1>$NameOfPage</h1>"); # writing in 'body'...
$bm->WriteTo('title',$NameOfPage); # ...and to the title in head
$bm->NamedImage('ProfilePic',
'http://files.phpclasses.org/picture/user/',
'PHP Classes profile picture',
'width="90" height="117" style="float:left;padding:.5em"');
$bm->NamedTag('Source','div','class="Source"','<p>Source:</p>');
$bm->WriteTo('style', 'div.Source {
width:50%;
border:solid 1px black;
float:right;
padding:.5em;
}');
$bm->out('<p>This is a small example of how you can use the '.
'buffer manager to navigate in a tree of buffers.</p>');
$bm->out('<p>Check the source to the right.</p>');
$bm->out('<p>The HTML_Tags class extends the buffer_manager class, '.
'adding a few methods relevant to HTML. ');
$bm->out('<p>Note that these are just examples of how to '.
'use buffers as templates for HTML, use your imagination!</p>');
$bm->out('<h2>Debug dump:</h2><p>Overview of buffer structure for debug purpouses.</p>');
$bm->NamedTag('DebugDump','div');
$bm->WriteTo('style', 'p {font-family:Verdana, sans-serif;}');
$bm->WriteTo('Source',highlight_file(__FILE__,true));
$bm->leave(); # leave 'body'
$bm->out('</body></html>');
# final adjustments before output
$bm->WriteTo('ProfilePic','930196.jpg');
$bm->WriteTo('DebugDump',$doc_node->dump());
echo (string) $bm->current();
?>
|