Pour la regex, j'aurai quand même dit que {{ a un peu trop de chances d'apparaitre pour autoriser une regex laxiste, mais c'est perso .
En revanche, quand tu dis "$filename provient du développeur", tu regardes les processus et non les états. Or, si tu fais de l'OO, tu ne doit regarder que l'état, pas les processus, en d'autres mots: C'est Quoi? (OO) et non Ca vient d'où? (Procédural). Ici, $filename est une chaîne de caractères, donc, dans l'état des choses, tenter d'accéder à des dossiers type "../../../etc/" est une feature...
ACache force la présence des deux méthodes configure() et get_config(), et même interdit leur surcharge. Ce sera donc moins souple qu'une interface, ou qu'une composition (on peut imaginer que la configuration du cache est un autre objet qui décore ton FileCache).
Je dirai que GPL est hyper-restrictive pour un moteur de template... Mais c'est toi qui décide.
A la limite, eval() ne poserai pas de soucis si le dev peut choisir un autre Viewer, mais
Force un Viewer... mieux vaut laisser le dev passer le Viewer à utiliser en paramètre au tpl.En revanche, quand tu dis "$filename provient du développeur", tu regardes les processus et non les états. Or, si tu fais de l'OO, tu ne doit regarder que l'état, pas les processus, en d'autres mots: C'est Quoi? (OO) et non Ca vient d'où? (Procédural). Ici, $filename est une chaîne de caractères, donc, dans l'état des choses, tenter d'accéder à des dossiers type "../../../etc/" est une feature...
ACache force la présence des deux méthodes configure() et get_config(), et même interdit leur surcharge. Ce sera donc moins souple qu'une interface, ou qu'une composition (on peut imaginer que la configuration du cache est un autre objet qui décore ton FileCache).
Je dirai que GPL est hyper-restrictive pour un moteur de template... Mais c'est toi qui décide.
A la limite, eval() ne poserai pas de soucis si le dev peut choisir un autre Viewer, mais
Code PHP :
<?php
protected function render()
{
// Affichage
$viewer = new Viewer();
$viewer->display($this->parsed_content, $this->getDataManager());
}
Je pense d'ailleurs qu'il ne faut pas instancier puis utiliser dans le même bloc, mis à part s'il s'agit d'un genre de "Macro" pour raccourcir certaines chaînes de code récurrentes. Dans les autres cas, cela contraint trop les choses.