Plantillas PHP en solo PHP | Programar Plus

Con cosas como plantillas literales en JavaScript y lenguajes de plantillas, como JSX, me he acostumbrado a querer escribir mis plantillas HTML en un buen trozo y agregar variables donde las necesite.

Tuve una situación en la que necesitaba hacer eso en PHP “crudo” el otro día, así que solo lo estoy documentando aquí.

Digamos que tengo algunos datos como …

$title = "The Title";
$desc  = "Some information about this thing blah blah.";
$img   = "/images/header.jpg";

Pero esos datos cambian, o puede haber varios conjuntos de ellos, y quiero poder pasar esos datos a una función y hacer que escupe algo de HTML. De esa forma, es fácil cambiar la plantilla y hacer que afecte a todos los usuarios.

No quiero esparcirlo en HTML como algo único. Prefiero tener una función.

function echo_card($title = "Default Title", $desc = "Default Description", $img = "/images/fallback.jpg") {
   echo "";
}

En lugar de interpolar cadenas de un montón de HTML juntos, PHP tiene la sintaxis HEREDOC que es una pizca como las plantillas literales de JavaScript.

function echo_card($title = "Default Title", $desc = "Default Description", $img = "/images/fallback.jpg") {
   $html = <<<"EOT"
      <div class="card">
         <img src="https://css-tricks.com/php-templating-in-just-php/$img" alt="">
         <h2>$title</h2>
         <p>$desc</p>
      </div>
EOT;

   echo $html;
}

Ahora puedo llamar a esta función para hacer eco de una plantilla HTML con mis datos.

echo_card($title, $desc, $img);

Me pareció una forma bastante cómoda de trabajar, sin requerir ninguna otra biblioteca ni nada.