J'essaie de créer un petit système de gabarit et d'avoir une fonction qui boucle sur un tableau d'éléments. Actuellement j'utilise les fonctions de mise en mémoire tampon de sortie et je peux donc charger le fichier de gabarit alors qu'il a une portée pour la classe.php, simuler inclure? Système de cache
function loadTemplate($name, $vars) {
$buf = '';
$path = $name . '.html';
if (file_exists($path)) {
$this->vars = $vars;
ob_start();
include($path);
$buf = ob_get_clean();
}
return $buf;
}
Je me demandais si je pouvais stocker le modèle initial dans un tableau alors fonctionner (comme si elle était incluse) tout en gardant la portée, comme.
function loadTemplate($name, $vars) {
$buf = $template = '';
if (isset($this->cache[$name]))
$template = $this->cache[$name];
else {
$path = $name . '.html';
$template = file_get_contents($path);
$this->cache[$name] = $template;
}
//Exec template here with scope.
}
Ou suis-je juste être pédant et essayer de micro optimize :)
systèmes structurants sont redondants en PHP. PHP lui-même est un moteur de template, pourquoi voulez-vous ajouter plus de frais généraux? – NullUserException
Peut-être parce que PHP est un langage de template assez complexe et que le code du template php a l'air horrible comparé aux systèmes de templates plus propres. De nombreux webdesigners dans l'entreprise pour laquelle je travaille ne parviennent tout simplement pas à travailler avec PHP très bien. Aussi ' ?>' ont tendance à confondre la coloration syntaxique si utilisé comme ceci '
J'essaie simplement de séparer le contenu du code afin que les mises à jour puissent être appliquées sans affecter les personnalisations des utilisateurs. – Alex