Quelle est la différence entre les filtres de post-compilation et les filtres de sortie ?

Smarty est un excellent moteur de templates PHP. Ce framework compile les templates écris par les développeurs pour exécuter par la suite la version compilée[1].

Parfois, il est nécessaire très pratique d’automatiser des traitements sur les templates. Par exemple pour modifier les URLs, appliquer des filtres sur les adresses emails, … C’est pourquoi Smarty propose les systèmes de postfilters et output filters. Mais lesquels utiliser ?

Les postfilters sont appliqués après la phase de compilation et juste avant que le template compilé ne soit enregistré dans le cache. Alors que les output filters sont appliqués à l’exécution du template compilé. Qu’est-ce que cela change dans la pratique ? Dans le premier cas, les modifications sur le template sont réalisées une seule fois et enregistrées dans le cache. Dans le second cas, les modifications sont réalisées à chaque appel au template.

Les postfilters semblent être une solution plus performante que les output filters. Pourtant lorsque les traitements à appliquer sur un template doivent être dynamiques à l’exécution[2], les output filters sont obligatoires.

Après ces quelques précisions, vous pouvez retourner à vos filtres[3]

Notes

[1] Par souci d’optimisation des performances.

[2] Par exemple si les modifications dépendent du contexte utilisateur.

[3] N’oubliez pas qu’il existe aussi les prefilters qui sont appliqués avant l’étape de compilation de templates.