June 6, 2016♦
<?php
namespace entities\html;
class Input
{
public function __construct(
$name=null, $type=null, $value=null, $class=null, $clear_on_focus=false)
{
$this->name = $name;
$this->type = $type;
$this->value = $value;
$this->class = $class;
$this->clear_on_focus = $clear_on_focus;
}
public function __toString()
{
return $this->build_html();
}
private function build_html()
{
$markup = "<input";
$markup .= $this->build_assignments();
if ($this->clear_on_focus)
{
$markup .= " onFocus=\"this.value='';this.style.color='black'\"";
}
$markup .= "/>\n";
return $markup;
}
protected function build_assignments()
{
$assignments = $this->build_assignment("name");
$assignments .= $this->build_assignment("type");
$assignments .= $this->build_assignment("value");
$assignments .= $this->build_assignment("class");
return $assignments;
}
private function build_assignment($name)
{
$value = $this->$name;
if (!is_null($value))
{
return " $name=\"$value\"";
}
return null;
}
}
<?php
namespace entities\html;
class Page
{
private $scripts = array();
public function __construct($title=null)
{
$this->set_title($title);
$this->css_path = $GLOBALS["CSS_PATH"];
}
protected function set_title($title)
{
$this->title = $title;
}
public function __toString()
{
return $this->build_html();
}
private function build_html()
{
$markup = "<html>\n";
$markup .= "<head>\n";
$markup .= $this->build_head();
$markup .= "</head>\n";
$markup .= $this->build_body();
$markup .= "</html>\n";
return $markup;
}
protected function build_head()
{
$markup = $this->build_title();
$markup .= $this->build_style_link();
$markup .= $this->build_script_tags();
$markup .= $this->build_description();
$markup .= $this->build_thumbnail_link();
$markup .= $this->build_favicon_link();
return $markup;
}
private function build_title()
{
$markup = "<title>" . $this->title . "</title>\n";
$markup .= new Meta($this->title, "title");
return $markup;
}
private function build_style_link()
{
$tag = "<link href=\"" . $this->css_path . "\" rel=\"stylesheet\">\n";
return $tag;
}
protected function build_script_tags()
{
$markup = "";
foreach ($this->scripts as $path)
{
$markup .= new Script($path);
}
return $markup;
}
private function build_description()
{
return new Meta($GLOBALS["PAGE_DESCRIPTION"], "description") . "\n";
}
private function build_thumbnail_link()
{
$tag = "<link rel=\"image_src\"";
$tag .= " href=\"" . $GLOBALS["THUMBNAIL_PATH"] . "\"/>";
return $tag;
}
private function build_favicon_link()
{
return new Link("shortcut icon", $GLOBALS["FAVICON_PATH"]);
}
private function build_body()
{
$markup = "<body>\n";
$markup .= $this->build_content();
$markup .= "</body>\n";
return $markup;
}
protected function build_content()
{
return "";
}
protected function add_script($path)
{
$this->scripts[] = $path;
}
}
<?php
namespace entities\html;
class Script
{
public function __construct($path=null, $content=null)
{
$this->path = $path;
$this->content = $content;
}
public function __toString()
{
return $this->build_html();
}
public function build_html()
{
$markup = "<script";
if (!is_null($this->path))
{
$markup .= " src=\"" . $this->path . "\"";
}
$markup .= ">";
$markup .= $this->build_content();
$markup .= "</script>\n";
return $markup;
}
protected function build_content()
{
return $this->content;
}
}
<?php
namespace entities\html;
class A extends Element
{
public function __construct($href=null, $content=null, $id=null, $class=null)
{
parent::__construct("a", $id, $class);
$this->add_attribute("href", $href);
$this->content = $content;
}
protected function build_content()
{
$content = $this->content;
if (is_null($content))
{
$content = $this->get_attribute("href");
}
return $content;
}
}
<?php
namespace entities\html;
class IFrame extends Element
{
public function __construct($id, $src, $width, $height)
{
parent::__construct("iframe", $id);
$this->add_attribute("src", $src);
$this->add_attribute("width", $width);
$this->add_attribute("height", $height);
$this->add_attribute("frameborder", "0");
}
}