El sistema de plantillas más simple del mundo (probablemente)

Supongamos que acabo de diseñar en HTML una ficha tipo (voy a hacer algo muy básico, sólo para ilustrar):

<html>
<head>[NOMBRE] [APELLIDO]</head>
<body>
	<h1>Ficha número    [ID]</h1>
	<p><b>Nombre:</b>   [NOMBRE] [APELLIDO]</p>
	<p><b>Edad:</b>     [EDAD] años</p>
	<p><b>Teléfono:</b> [TELÉFONO]</p>
	<p><b>eMail:</b>    <a href="mailto:[EMAIL]">[EMAIL]</a></p>
</body>
</html>

Y ahora convierto las variables a sintaxis PHP básica, manteniendo el HTML intacto:

<html>
<head><?=$nombre.' '.$apellido;?></head>
<body>
	<h1>Ficha número    <?=$id;?></h1>
	<p><b>Nombre:</b>   <?=$nombre.' '.$apellido;?></p>
	<p><b>Edad:</b>     <?=$edad;?> años</p>
	<p><b>Teléfono:</b> <?=$telefono;?></p>
	<p><b>eMail:</b>    <a href="mailto:<?=$eMail;?>"><?=$eMail;?></a></p>
</body>
</html>

LLamo a esta plantilla «ficha.php» y la guardo en una carpeta «plantillas», por ejemplo. A continuación, en un documento nuevo (que llamaré «index.php», para ser original) declaro la función que sirve para crear contenidos en base a plantillas.

<?php
function tpl($p,$d=array())
	{
	extract($d);
	ob_start();
	require('plantillas/'.$p.'.php');
	return ob_get_clean();
	}
?>

Y ya está: No tengo más que llamar a esa función con la info obtenida de la base de datos cada vez que quiera volcarla en pantalla utilizando esa plantilla.

<?php
echo tpl('ficha',
			array(
				'id'=>      123,
				'nombre'=>  'Juan',
				'apellido'=>'Gómez',
				'edad'=>    33,
				'telefono'=>'987654321',
				'eMail'=>   'foo@bar.es'
				)
		);
?>

Con ese PHP generamos este HTML:

<html>
<head>Juan Gómez</head>
<body>
	<h1>Ficha número    123</h1>
	<p><b>Nombre:</b>   Juan Gómez</p>
	<p><b>Edad:</b>     33 años</p>
	<p><b>Teléfono:</b> 987654321</p>
	<p><b>eMail:</b>    <a href="mailto:foo@bar.es">foo@bar.es</a></p>
</body>
</html>

La principal ventaja que presenta este método es que estoy separando en la medida de lo posible la forma del contenido. El documento «ficha.php» es fácilmente editable por un diseñador web sin conocimientos de programación PHP (Tan sólo ha de comprender la sintaxis <?=$variable;?>, que no es mucho pedir), mientras que el documento «index.php» sólo contiene programación PHP, sin una sola etiqueta HTML molestando por medio, de modo que el programador se centra exclusivamente en la programación.


Acerca de esta entrada