BarelyFitz Designs : http://www.barelyfitz.com/homepages/patrick.fitzgerald/resume/code-samples/template/index.php

A Templating Class for PHP

Man kicking alien
Kick the HTML out of your PHP code!

Example and Source Code

A small example application using the template class can be found on the left side of this page. Other links let you view the source code of the example, the templates, and the templating class itself.

Features

Here are some of the features of my templating system:

Genesis and Revelations

PHP makes it easy to add programming code directly into your HTML pages, but for web applications this is a bad technique. It's better to keep your HTML in template files, separate from your application code. The template files can contain placeholders for the data and variables to be displayed.

While searching for a templating system for PHP, I encountered numerous suggestions:

  1. A fast template function.

    The first solution I tried was a set of simple functions for loading template files. This did the trick, but was inelegant and limiting. Sometimes I wanted to do more than just place values into the template. (Yes -- the idea of templates is to keep code and display separate, but it can be very useful to bend the rules at times.)

  2. A complete templating system.

    In search for more flexibility, I discovered several complete templating systems. These systems let you add all sorts of directives to your template files, almost like a new programming language. I thought this was rather silly, since it was just adding another layer of programming on top of PHP - if someone could learn a complex templating language, they could certainly learn a little PHP!

  3. Simple: just include the file with PHP!

    So, full circle, I came to the conclusion that all of these templating solutions were worthless, because, with some self-discipline, PHP itself was a great templating system. But one problem remained: PHP has a nasty tendency when you include a file to immediately display the content of the file. This can be a problem when constructing a web page from multiple template files.

    Luckily, PHP also has the ability to shut it's mouth when you tell it to: with output buffering you can temporarily redirect PHP's output streams and capture the data for future use. By using output buffering, and throwing in a few other features, I created a templating system with the features I desired.


Why Use Templates

Using templates gives you numerous advantages:

The templates can be modified without risk of mutilating the application code.

You can separate your development efforts, so programmers can work on the application code and designers can work on the look and feel. Designers won't have to learn much PHP to insert simple variables into the templates.

Your application can offer multiple look-and-feel options - just change the template directory!

Your application can be translated into another language by modifying the template files.


Template Class

The following links pop open a new window.

Example

View Source