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?