gelembjuk/templating

Common interface for different PHP templating engines like Smarty,Twig. This package allows to switch between engines witout changes in your PHP code

1.0.7 2016-04-22 09:15 UTC

This package is not auto-updated.

Last update: 2024-11-13 09:35:26 UTC


README

Common interface for different PHP templating engines like Smarty, Twig. This package allows to switch between engines witout changes in your PHP code.

The package was created to be able to migrate to different popular PHP templating engines without need to change my application code. However, it is still needed to modify templates.

Installation

Using composer: gelembjuk/templating require: {"gelembjuk/templating": "1.*"}

Additionally, you have to install a template engine you want to use - smarty/smarty or twig/twig (later i hope to add support of other engines).

Configuration

Configuration is done in run time with a constructor options (as hash argument)

$templateroptions = array(
		'templatepath' => $templatesdir, // directory where templates are stored
		'compiledir' => $compiledir,    // directory to use for compilation temp files. It is needed fro Smarty, but not Twig 
		'usecache' => false,       // don't cache . If true then use cache
		'cachedir' => $cachedir,   // path to cache directory. used if `usecache` is true
		'extension' => 'htm' // our templates files will have htm extension
	);

Usage

require '../vendor/autoload.php';

$templater = new Gelembjuk\Templating\SmartyTemplating();
// $templater = new Gelembjuk\Templating\TwigTemplating();

// init template engine
$templater->init($templateroptions);

$templater->setVar('firstname',"John");
$templater->setVar('lastname',"Smith");

$templater->setTemplate('homepage');

// fetch page page content
$pagecontent = $templater->fetchTemplate();

echo $pagecontent;

File homepage.htm in case of Smarty

<div>

<h1>Hello {$lastname}, {$firstname} </h1> 

</div>

File homepage.htm in case of Twig

<div>

<h1>Hello {{ lastname }}, {{ firstname }} </h1> 

</div>

Author

Roman Gelembjuk (@gelembjuk)