De compilatie

De SPIP compiler, in bestand ecrire/public/compiler.php, wordt aangeroepen door functie compiler() vanuit de functie parametrer(). De compilatie begint met het aanroepen van de juiste parser, afhankelijk van de gevraagde grammatica (de concrete syntaxis van het sjabloon). Het is dus de phraser_html() parser die wordt aangeroepen in het bestand ecrire/public/phraser_html.php. Het transformeert de syntaxis van het skelet in een tabel ($boucles) van lijsten van PHP objecten die de concrete syntaxis vormen die de compilatiefunctie zal analyseren. Voor elke gevonden lus voert SPIP een aantal processen uit, te beginnen met het zoeken naar welke SQL-tabellen overeenkomen en welke samenvoegingen voor deze tabellen zijn gedeclareerd. Vervolgens berekent het de criteria die worden toegepast op de lussen (gedeclareerd in ecrire/public/criteres.php of via plugins), en vervolgens de inhoud van de lussen (waarvan sommige bakens zijn gedefinieerd in ecrire/public/balises.php). Vervolgens worden de skelet-elementen berekend die buiten elke lus vallen. Tot slot worden de lusfuncties uitgevoerd die in het bestand ecrire/public/boucles.php zijn gedeclareerd. Het resultaat van dit alles is een PHP-coded executable met een PHP-functie voor elke lus, en een algemene PHP-functie voor het gehele skelet. Het is deze uitvoerbare code die de compiler retourneert. Deze code wordt opgeslagen in de cache en vervolgens uitgevoerd door composer met de contextuele parameters die zijn doorgegeven. Het resultaat is de code voor de opgevraagde pagina, die in de cache wordt opgeslagen (door de functie cacher() een tweede keer aan te roepen, in het bestand assembler.php) en vervolgens naar de browser wordt gestuurd (of als het een insluiting is, aan een paginafragment toegevoegd). Het kan nog steeds PHP bevatten wanneer bepaalde details moeten worden weergegeven, afhankelijk van de persoon die de pagina bezoekt, zoals bij dynamische formulieren.

Auteur hanjo Gepubliceerd op:

Vertalingen: English, français, Nederlands