Bien que le code d'une page d'affichage ou de
traitement de données peut être écrit dans un seul fichier, il est important
que le langage offre des solutions pour structurer le code et le séparer en
plusieurs composants qui peuvent être assemblés et exécutés dynamiquement pour compléter le
traitement du code.
On peut conceptualiser, par exemple, une page d'affichage des données des employées qui a :
- un entête (commun à toutes les pages de l'application) ;
- et un corps (code de la page requêtée).
en assemblant deux
fichiers CFM, par exemple, la page d'affichage des commandes
« employee.cfm » peut utiliser le tag «
cfinclude
» pour
inclure l'entête de la page «
main_header.cfm
» et le corps de la page «
employee_data.cfm
».
De plus, la page «
employee_data.cfm
»
peut se concentrer uniquement sur l'affichage des données et déléguer le
processus de sélection des données de la base de données à une fonction implémentée
dans un simple fichier CFM ou faisant partie d'un CFC.
ColdFusion offre aussi la possibilité d'étendre
sa librairie des tags en permettant le développement des tags personnalisés (créer
ses propres CFML tags) qui peuvent implémenter des traitements spécifiques à
une application ; par exemple, un tag qui exécute une requête et retourne
les données sélectionnées, ou un tag qui formate des données, de type date ou
monétaire, selon des formats précis. De manière général, un tag peut être
remplacé par une fonction, mais il y a trois choses qui différencie un tag
d'une fonction :
- premièrement la syntaxe pour appeler un tag dans le code est différente de celle qu'on utilise pour appeler une fonction ;
- deuxièmement un tag a un mode d'exécution qui est différent de celui d'une fonction ;
- et finalement un tag personnalisé peut être écrit dans d'autres langages.
Dans ce chapitre, je vais présenter les
différentes solutions possibles avec ColdFusion pour appeler un code externe à
la page, à savoir cfinclude, cfmodule, cffunction, ainsi que les autres
méthodes pour appeler un tag personnalisé.
Il faut savoir que chaque solution est adéquate pour des contextes
d'utilisation bien particuliers, et donc je vais essayer de ressortir les différents
contextes possibles pour ces différentes solutions. De même, je vais faire une
comparaison de performance d'exécution entre ces différentes solutions.
- cfinclude
- cfmodule
- cffunction
- cfcomponent