Package Compilation

Fichiers du package

FichierDescription
compiler.php

Fichier principal du compilateur de squelettes

Liste des constantes

Valeur

  • "/^(.)[.]\s'[^']+'\s*$/"

Package

Valeur

  • "/^([?]\s('[^']+')\s:\s''\s[)]$/"

Package

Valeur

  • "/^([?]\s''\s:\s('[^']+')\s[)]$/"

Package

La constante donne le cadre systématique du code:

  • %s1: initialisation des arguments de calculer_select
  • %s2: appel de calculer_select en donnant un contexte pour les cas d'erreur
  • %s3: initialisation du sous-tableau Numrows[id_boucle]
  • %s4: sauvegarde de la langue et calcul des invariants de boucle sur elle
  • %s5: boucle while sql_fetch ou str_repeat si corps monotone
  • %s6: restauration de la langue
  • %s7: liberation de la ressource, en tenant compte du serveur SQL
  • %s8: code de trace eventuel avant le retour

Valeur

  • '%s if (defined("_BOUCLE_PROFILER")) $timer = time()+(float)microtime(); $t0 = ""; // REQUETE $iter = IterFactory::create( "%s", %s, array(%s) ); if (!$iter->err()) { %s%s$SP++; // RESULTATS %s %s$iter->free(); }%s if (defined("_BOUCLE_PROFILER") AND 1000($timer = (time()+(float)microtime())-$timer) > _BOUCLE_PROFILER) spip_log(intval(1000$timer)."ms %s","profiler"._LOG_AVERTISSEMENT); return $t0;'

Package

Code PHP pour un squelette (aussi pour #INCLURE, #MODELE #LES_AUTEURS)

Valeur

  • 'recuperer_fond(%s, %s, array(%s), %s)'

Package

Liste des fonctions

void argumenter_inclure( $params , $rejet_filtres , $p , & $boucles , $id_boucle , $echap = true , $lang = '' , $fond1 = false )

Paramètres

  1. $params
  2. $rejet_filtres
  3. $p
  4. & $boucles
  5. $id_boucle
  6. $echap = true
  7. $lang = ''
  8. $fond1 = false

Package

Ce corps remplit une variable $t0 retournée en valeur. Ici on distingue boucles recursives et boucle à requête SQL et on insère le code d'envoi au debusqueur du resultat de la fonction.

string calculer_boucle( string $id_boucle , array & $boucles )

Paramètres

  1. string $id_boucle

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

Retour

  • string

    Code PHP compilé de la boucle

Package

string calculer_boucle_nonrec( string $id_boucle , array & $boucles , string $trace )

Paramètres

  1. string $id_boucle

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. string $trace

    Code PHP (en mode debug uniquement) servant à conserver une trace des premières valeurs de la boucle afin de pouvoir les afficher dans le débugueur ultérieurement

Retour

  • string

    Code PHP compilé de la boucle récursive

Package

string calculer_boucle_rec( string $id_boucle , array & $boucles , string $trace )

Paramètres

  1. string $id_boucle

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. string $trace

    Code PHP (en mode debug uniquement) servant à conserver une trace des premières valeurs de la boucle afin de pouvoir les afficher dans le débugueur ultérieurement

Retour

  • string

    Code PHP compilé de la boucle récursive

Package

Internal

  • Il suffit (ET IL FAUT) sauvegarder les valeurs des arguments passes par reference, car par definition un tel passage ne les sauvegarde pas

Décrit le code qui complète le tableau $command qui servira entre autres à l'itérateur. Pour un nom de commande donnée et un code PHP décrivant ou récupérant une valeur, on retourne le code PHP qui fait l'affectation.

L'index 0 du tableau retourné indique, lorsqu'il n'est pas vide, que l'affectation de la variable pourra être statique (c'est à dire qu'il ne dépend pas d'une quelconque variable PHP), et donc attribué une fois pour toutes quelque soit le nombre d'appels de la boucle.

array calculer_dec( string $nom , string $val )

Paramètres

  1. string $nom

    Nom de la commande

  2. string $val

    Code PHP décrivant la valeur à affecter

Retour

  • array
    • index 0 : Code pour une affectation statique. Si non rempli, la propriété devra être ré-affectée à chaque appel de la boucle.

    • index 1 : Code de l'affectation

Package

Lorsqu'un tableau est transmis, reconstruit de quoi créer le tableau en code PHP (une sorte de var_export) en appelant pour chaque valeur cette fonction de manière récursive.

Si le premier index (0) du tableau est "'?'", retourne un code de test entre les 3 autres valeurs (v1 ? v2 : v3). Les valeurs pouvant être des tableaux aussi.

string calculer_dump_array( mixed $a )

Paramètres

  1. mixed $a

    Les données dont on veut construire un équivalent de var_export

Retour

  • string

    Expression PHP décrivant un texte ou un tableau

Package

void calculer_dump_join( $a )

Paramètres

  1. $a

Package

string calculer_from( \Boucle & $boucle )

Paramètres

  1. \Boucle & $boucle

    Description de la boucle

Retour

  • string

    Code PHP construisant un tableau des alias et noms des tables du FROM

Package

string calculer_from_type( \Boucle & $boucle )

Paramètres

  1. \Boucle & $boucle

    Description de la boucle

Retour

  • string

    Code PHP construisant un tableau des alias et type de jointure du FROM

Package

string calculer_inclure( \Inclure $p , array & $boucles , string $id_boucle )

Paramètres

  1. \Inclure $p

    Description de l'inclusion (AST au niveau de l'inclure)

  2. array & $boucles

    AST du squelette

  3. string $id_boucle

    Identifiant de la boucle contenant l'inclure

Retour

  • string

    Code PHP appelant l'inclusion

Package

void calculer_liste( $tableau , $descr , & $boucles , $id_boucle = '' )

Paramètres

  1. $tableau
  2. $descr
  3. & $boucles
  4. $id_boucle = ''

Package

void calculer_order( & $boucle )

Paramètres

  1. & $boucle

Package

Le code produit est un tableau associatif $command contenant les informations pour que la boucle produise ensuite sa requête, tel que $command['from'] = 'spip_articles';

string calculer_requete_sql( \Boucle $boucle )

Paramètres

  1. \Boucle $boucle

    AST de la boucle

Retour

  • string

    Code PHP compilé définissant les informations de requête

Package

void compile_cas( $tableau , $descr , & $boucles , $id_boucle )

Paramètres

  1. $tableau
  2. $descr
  3. & $boucles
  4. $id_boucle

Package

string compile_concatene_parties_codes( $partie1 , $partie2 )

Paramètres

  1. $partie1
  2. $partie2

Retour

  • string

Package

void compile_inclure_doublons( $lexemes )

Paramètres

  1. $lexemes

Package

mixed | string compile_retour( string $code , string $avant , string $apres , string $altern , string $tab , integer $n )

Paramètres

  1. string $code

    le code principal, dont le resultat conditionnera le reste

  2. string $avant

    la partie conditionnelle avant, qui est calculee apres le code, mais s'affiche avant si le code produit un resultat

  3. string $apres

    la partie conditionnelle apres, qui est calculee apres le code, et s'affiche apres si le code produit un resultat

  4. string $altern

    la partie alternative apres, qui est calculee apres le code, et s'affiche apres, si le code ne produit pas de resultat

  5. string $tab

    tabulation

  6. integer $n

    compteur

Retour

  • mixed | string

Package

void compiler_squelette( $squelette , $boucles , $nom , $descr , $sourcefile , $connect = '' )

Paramètres

  1. $squelette
  2. $boucles
  3. $nom
  4. $descr
  5. $sourcefile
  6. $connect = ''

Package

S'il existe des statuts sur cette table, déclarés dans la description d'un objet éditorial, applique leurs contraintes

void instituer_boucle( \Boucle & $boucle , boolean $echapper = true , boolean $ignore_previsu = false )

Paramètres

  1. \Boucle & $boucle

    Descrition de la boucle

  2. boolean $echapper = true

    true pour échapper le code créé

  3. boolean $ignore_previsu = false

    true pour ne tester que le cas publie et ignorer l'eventuel var_mode=preview de la page

Package

Retourne la source, le nom, l'identifiant de boucle, la ligne, la langue de l'élément dans une chaîne.

string memoriser_contexte_compil( Object $p )

Paramètres

  1. Object $p

    Objet de l'AST dont on mémorise le contexte

Retour

  • string

    Informations du contexte séparés par des virgules, qui peut être utilisé pour la production d'un tableau array()

Package

void public_compiler_dist( $squelette , $nom , $gram , $sourcefile , $connect = '' )

Paramètres

  1. $squelette
  2. $nom
  3. $gram
  4. $sourcefile
  5. $connect = ''

Package

Pour un tableau d'information de contexte donné, retourne un objet Contexte (objet générique de l'AST) avec ces informations

\Contexte reconstruire_contexte_compil( array $context_compil )

Paramètres

  1. array $context_compil

    Tableau des informations du contexte

Retour

  • \Contexte

    Objet Contexte

Package

Analyse si le type de donnee peut etre traite et dans ce cas charge la boucle avec cet iterateur. Affichera une erreur dans le cas contraire.

void requeteur_data_dist( & $boucles , & $boucle , & $id )

Paramètres

  1. & $boucles

    Liste des boucles

  2. & $boucle

    La boucle parcourue

  3. & $id

    L'identifiant de la boucle parcourue

Package

Analyse si le nom d'iterateur correspond bien a une classe PHP existante et dans ce cas charge la boucle avec cet iterateur. Affichera une erreur dans le cas contraire.

void requeteur_php_dist( & $boucles , & $boucle , & $id )

Paramètres

  1. & $boucles

    Liste des boucles

  2. & $boucle

    La boucle parcourue

  3. & $id

    L'identifiant de la boucle parcourue

Package