web.template

[SF home page] [Download] [Mailing list] [Forum] [wiki]

It's new template system for PHP. It's work only with PHP5, so I can't show same examples on this page - SF give only PHP4. Why this template system was different/better? It use XML-like look language, and you can call for templates method in your classes.

I know that this page is very ascetic. Sorry, I haven't to many time, and artistic talents. If you want, you can make same layout web.template main page (you can found e-miaƂ to me in web.template sources).

If you like web.template and if you're looking for same other power full stuff for PHP5, you can interesting web.framework - MVC framework for PHP5.

Help wanted

I looking for same one who help me write documentation for web.template. I want to work at this documentation on web.framework wiki. If you're interesting, you can register on this wiki, and write to me:-)

Short examples

PHP file:

class User {
	public function getName() {
	// you can get it from DB for example
		return 'Marcin';
}

public function getSurname() {
	// you can get it from DB for example
	return 'Staniszczak';
}

public function getPhoto() {
	// you can get it from DB for example
	return 'mstaniszczak.jpg';
}
}

$tpl = new WebTemplate();
$tpl->setCacheDir('templates/cache/');
$tpl->setCompileDir('templates/compile/');
$tpl->setTemplateDir('templates/templates/');

$tpl->addVarClass("user", new User);	
$tpl->assign('Version', '1.0');
$tpl->assign('img', 'logo.gif');


$tpl->display('index.tpl', 'cache_id');

TPL file (index.tpl):

<img wt:src="{logo}"/> <br />
<img wt:src="{user.photo}" /> <wt:var name="user.name" /> <wt:var name="user.surname" /><br />
<wt:var name="version" />

It's product HTML like this:
<img src="logo.gif"/> <br />
<img src="mstaniszczak.jpg" /> Marcin Staniszczak<br />
1.0

Form now you can too use arrays of objects:

PHP file:

class User {
	private $name;
	private $surname;
	private $pict;

	public function __construct($name, $surname, $pict) {
		$this->name = $name;
		$this->surname = $surname;
		$this->pict = $pict;
}

	public function getName() {
	// you can get it from DB for example
		return 'Marcin';
}

public function getSurname() {
	// you can get it from DB for example
	return 'Staniszczak';
}

public function getPhoto() {
	// you can get it from DB for example
	return 'mstaniszczak.jpg';
}
}

$tpl = new WebTemplate();
$tpl->setCacheDir('templates/cache/');
$tpl->setCompileDir('templates/compile/');
$tpl->setTemplateDir('templates/templates/');

//you can use too associate arrays
$users = array(
	new User('Marcin', 'Staniszczak', 'mstaniszczak.jpg'),
	new User('Scott', 'Forge', 'sforge.jpg'),
	new User('Mark', 'Buges', 'mbuges.jpg'),
);

$tpl->assignObjArray('users', $users);

$tpl->assign('Version', '1.0');
$tpl->assign('img', 'logo.gif');


$tpl->display('index.tpl', 'cache_id');

TPL file (index.tpl):

<img wt:src="{logo}"/> <br />
<wt:foreach data="users" value="user">
<img wt:src="{user.photo}" /> <wt:var name="user.name" /> <wt:var name="user.surname" /><br />
</wt:foreach>
<wt:var name="version" />

It's product HTML like this:
<img src="logo.gif"/> <br />
<img src="mstaniszczak.jpg" /> Marcin Staniszczak<br />
<img src=" sforge.jpg" /> Scott Forge<br />
<img src=" mbuges.jpg" /> Mark Buges<br />
1.0

Why getters

Why you should use classes with getter, not assign variables? If you not always need same variables (for example in conditionals constructions - <wt:if ...>), gutter guaranty that template call this method only when data given by this getter will be really needed - so only when condition form <wt:if ...> was grant.

And at the end - sorry for my English... If you have same free time, you can correct this text and send me it back.

SourceForge.net Logo