Blog

2

Membuat PHP templating engine sederhana.

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]
<?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();
}
}
[/php]

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.

[php]
// 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();
[/php]

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

[php]
<!– 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>
[/php]

Salah satu content template nya adalah:

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

Mudah bukan. Semoga bisa jadi ispirasi..

Comments

Leave a Reply

Your email is never published nor shared. Required fields are marked *

*

© Copyright PT Javan Cipta Solusi 2012. All rights reserved.