Stavo leggendo questa domanda su StackOverflow:
e la risposta accettata dice di fare semplici modelli PHP come questo:
template.php:
<html>
<head>
<title><?=$title?></title>
</head>
<body>
<?=getContent()?>
</body>
</html>
index.php:
<?php
$title = 'Demo Title';
function getContent() {
return '<p>Hello World!</p>';
}
include('template.php');
?>
Per quanto sopra, non è ben strutturato nel senso che template.php dipende da variabili definite in altri script. E stai usando un include () per eseguire codice quando fai include('template.php') (invece di usare include () per includere una classe o una funzione che non viene immediatamente eseguita).
Credo che un approccio migliore sia quello di avvolgere il tuo modello all'interno di una funzione:
template.php:
<?php
function template($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>Hello World!</p>');
?>
Il secondo approccio è migliore? C'è un modo ancora migliore per farlo?