A light weight helper for simple php templating.
If you want to keep your view logic separated from the core code, Tower is for you. Tower is obviously not a full-fledged template engine. Although if you are using a PHP framework like Codeigniter, Laravel etc., Tower is again a bad solution.
Tower is best suited if for small scale web applications, where you may not need a full-fledged framework. If you decide to write a web application using plain PHP, then do check Tower.
Tower is available via composer. Add the following line to your composer.json
so that Tower is autoloaded into your application.
"require": {
"swaroopsm/tower": "0.3"
}
Tower has a very simple and easy API consisting of a few methods.
$tower = new Tower();
Tell Tower which file should be used as the template.
// filename: template.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h2><?= $name ?></h2>
<p><?= $description ?></p>
</body>
</html>
$tower->setTemplate('template.php');
Tower lets you setup variables that can be used in your template.
$tower->set('name', 'Tower');
$tower->set('description', 'A simple template helper');
Render on your browser.
$tower->render();
Tower also lets you add a layout for your templates. This can be useful if for your webpages. Example on using layout in your templates;
$tower->setLayout('layout.php');
You use the $yield
to render the template contents in your helper. A more detailed example on using layout is availabe at: Layout Example
Partials allows you to include templates in other templates thus allowing you to re-use the templates. Refer to the following code in order to set partials for your templates.
$tower->partial->set('header', 'header.php');
$tower->partial->set('footer', 'footer.php');
And to render these partials in your templates use:
<?= $partial['header'] ?>
Some stuffs here...
<?= $partial['footer'] ?>
If you decide to use a different variable for the partial instead of $partial
use the following:
$tower->partial->setPrefix('towerPartial');
Now you can do the following:
<?= $towerPartial['header'] ?>
Some stuffs here...
<?= $towerPartial['footer'] ?>
Refer here for a Detailed Example
Few other extra methods included in Tower.
This is useful if you would like to dynamically save contents to a file.
$tower->save('filename.txt');