HTML Template PHP class
This is my first fully-written PHP class to ease my HTML page creation process by pre-set the DOCTYPE and other required tags in a normal HTML page. The class is inspired by this article where it talks about wp_header and wp_footer of WordPress. I thought that this is a great exercise to increase my OOP (Object-Oriented Programming) skill. Therefore I wrote the following code based on my creation habit for HTML pages:
<?php
class template {
public $title;
public $style;
function header($headerContent="") {
echo "<!doctype html>n";
echo "<html>n";
echo "<head>n";
echo "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />";
echo "<title>";
echo $this->title;
echo "</title>n";
if (isset($this->style) || !empty($this->style)) {
echo "<link href='{$this->style}' rel='stylesheet' type='text/css' />n";
}
// Output additional header content if available
if (function_exists($headerContent)) {
$headerContent();
}
echo "</head>n";
}
function body($bodyContent="") {
echo "<body>n";
// Output body content
if (function_exists($bodyContent)) {
$bodyContent();
}
}
function script($script='') {
if (strstr($script, ".js") || strstr($script, "://")) {
echo "<script type='text/javascript' src='{$script}'></script>n";
}
else {
if (strstr($script, "()")) {
$function = str_replace("()", "", $script);
if (function_exists($function)) {
$function();
}
}
else {
echo "<script type='text/javascript'>n";
echo $script;
echo "</script>n";
}
}
}
function footer($footerContent="") {
if (function_exists($footerContent)) {
$footerContent();
}
echo "</body>n";
echo "</html>n";
}
}
?>
The header, body, and footer methods include an optional string variable. As you can see in the code above, this variable needs to be a function name. The function name in these three methods doesn’t require parentheses. However, the function name needs to have parentheses in the script method. The script method is different from the above three methods as it can be reused in the same HTML page. For example, the following is a simple page with the class applied:
<?php
$ca282 = new template();
$ca282->title = "Robby Chen CA 282";
$ca282->style = "styles/global.css";
$ca282->header("headerContent");
$ca282->body("bodyContent");
$ca282->script("http://www.google.com/jsapi");
$ca282->script("google.load('jquery','1')");
$ca282->script("jquery()");
$ca282->footer();
?>
Notice that the script method has three formats in the above example, external JS, on-line code, and a function. I didn’t pre-set the script tag between function because I need the syntax highlighting and auto-completion features in NetBeans. The following is my jquery() function in case you don’t know how to activate these two features within a PHP function:
<?php
function jquery() {
?>
<script type="text/javascript">
$(document).ready(function() {
$("#logo").html("Logo");
});
</script>
<?php
}
?>
Basically, the JavaScript code is outside the php tag but inside the PHP function. This way the script content will only appear after the jquery function is called.
You can download the class file here.