Eu estava lendo esta pergunta no stackoverflow:
/programming/104516/calling-php-functions-within-heredoc-strings
e a resposta aceita diz para criar modelos PHP simples como este:
template.php:
<html>
<head>
<title><?=$title?> </title>
</head>
<body>
<? = getContent ()?>
</body>
</html>
index.php:
<? php
$ title = 'Título da demonstração';
função getContent () {
retornar '<p> Olá mundo! </p>';
}
include ('template.php');
?>
Para mim, o exposto acima não está bem estruturado no sentido de que o template.php depende de variáveis definidas em outros scripts. E você está usando um include () para executar o código quando o faz include('template.php')(ao contrário de include () para incluir uma classe ou uma função que não é executada imediatamente).
Eu sinto que uma abordagem melhor é envolver seu modelo dentro de uma função:
template.php:
<? php
modelo de função ($ title, $ content) {
ob_start (); ?>
<html>
<head>
<title><?=$title?> </title>
</head>
<body>
<? = $ content?>
</body>
</html>
<? php return ob_get_clean ();
}
?>
index.php:
<? php
require_once ('template.php');
print template ('Demo Title', '<p> Olá, mundo! </p>');
?>
A segunda abordagem é melhor? Existe uma maneira ainda melhor de fazer isso?