La compilation

Le compilateur de SPIP, dans le fichier ecrire/public/compiler.php est appelé avec la fonction compiler() depuis la fonction parametrer().

La compilation commence par appeler le phraseur approprié en fonction de la grammaire demandée (la syntaxe concrète du squelette). C’est donc le phraseur phraser_html() qui est appelé, dans le fichier ecrire/public/phraser_html.php. Il transforme la syntaxe du squelette en un tableau ($boucles) de listes d’objets PHP formant la syntaxe concrète que va analyser la fonction de compilation.

Pour chaque boucle trouvée, SPIP effectue un certain nombre de traitements en commençant par retrouver à quelles tables SQL elle correspond et quelles jointures sont déclarées pour ces tables.

Il calcule ensuite les critères appliqués sur les boucles (déclarés dans ecrire/public/criteres.php ou par des plugins), puis le contenu des boucles (dont les balises définies pour certaines dans ecrire/public/balises.php). Il calcule ensuite les éléments d’un squelette extérieur à une boucle.

Il exécute enfin les fonctions de boucles qui sont déclarées dans le fichier ecrire/public/boucles.php. Le résultat de tout cela construit un code PHP exécutable avec une fonction PHP par boucle, et une fonction PHP générale pour le squelette.

C’est ce code exécutable que retourne le compilateur. Ce code sera mis en cache puis exécuté par le composeur avec les paramètres de contexte transmis. Le résultat est le code de la page demandé, qui sera mis en cache (par appel de la fonction cacher() une seconde fois, dans le fichier assembler.php) puis qui sera envoyé au navigateur (ou si c’est une inclusion, ajouté à un fragment de page). Il peut encore contenir du PHP lorsque certaines informations doivent s’afficher en fonction du visiteur, comme les formulaires dynamiques.

Auteur Matthieu Marcillaud Publié le : Mis à jour : 12/05/17

Traductions : English, français, Nederlands