Templating engine berfungsi untuk memisahkan antara logic dan tempilan, ada banyak templating engine PHP antara lain Smarty, Twigs dan lain-lain.  Namun sering kali jadi sulit untuk menggunakannya karena harus mempelajari Syntax baru.  Kita juga bisa dapat membuat template engine sederhana sendiri yang hanya membutuhkan beberapa beris code

<?php
// file: Template.php
class Template
{
    protected $path;
    protected $object;

    public function __construct($path)
    {
        $this->path = $path;
    }
    public function render($object = null)
    {
        extract(get_object_vars($this->object?:$this));
        ob_start();
        include $this->path;
        return ob_get_clean();
    }

    public function setObject($object)
    {
        $this->object = $object;
    }

    public function display()
    {
        echo $this->render();
    }
}

Kode kunci pada templating ini adalah fungsi ob_start() dan fungsi ob_get_clean(). Fungsi ob_start akan membuat semua output tidak dikeluarkan secara langsung. Sementara objek ob_get_clean akan mengambil semua output tertunda dari php dan mengkonversinya menjadi string.

Fungsi lainnya disana adalah fungsi extract, fungsi ini akan membuat semua array menjadi variable.. sementara get_object_vars akan menambil semua property dalam objek dan kemudian mengubahnya menjadi array.

Cara penggunaannya cukup simple, berikut setting dan logic yang di perlukan.

// file: index.php
require 'Template.php';

$tpl = new Template('content.phtml');
$tpl->name = 'Some One';
$tpl->email = 'some@gmail.com';

$layout = new Template('layout.phtml');
$layout->title = 'Something title';
$layout->content = $tpl;

$layout->display();

kita memerlukan kode untuk layoutnya, layout dapat digunakan untuk lebih dari satu content template.

<!-- layout.phtml -->
<html>
<head>
    <title><?php echo $title?></title>
</head>
<body>
<div id="container">
    <div id="header">
        <h1><?php echo $title ?></h1>
    </div>
    <div id="content">
        <?php echo $content ?>
    </div>
    <div id="footer">
        &copy;Something
    </div>
</div>
</body>
</html>

Salah satu content template nya adalah:

<!-- file: content.phtml -->
<p>Name : <?php echo $name?></p>
<p>Email : <?php echo $email?></p>

Mudah bukan. Semoga bisa jadi ispirasi..