Package Compilation

Fichiers du package

FichierDescription
compiler.php

Fichier principal du compilateur de squelettes

Proposer une amélioration

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

Proposer une amélioration

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

Proposer une amélioration
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

Proposer une amélioration
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
Proposer une amélioration

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

Proposer une amélioration

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

Proposer une amélioration
void calculer_dump_join( $a )

Paramètres

  1. $a

Package

Proposer une amélioration
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

Proposer une amélioration
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

Proposer une amélioration
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

Proposer une amélioration
void calculer_liste( $tableau , $descr , & $boucles , $id_boucle = '' )

Paramètres

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

Package

Proposer une amélioration
void calculer_order( & $boucle )

Paramètres

  1. & $boucle

Package

Proposer une amélioration

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

Proposer une amélioration
void compile_cas( $tableau , $descr , & $boucles , $id_boucle )

Paramètres

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

Package

Proposer une amélioration
void compile_inclure_doublons( $lexemes )

Paramètres

  1. $lexemes

Package

Proposer une amélioration
void compile_retour( $code , $avant , $apres , $altern , $tab , $n )

Paramètres

  1. $code
  2. $avant
  3. $apres
  4. $altern
  5. $tab
  6. $n

Package

Proposer une amélioration
void compiler_squelette( $squelette , $boucles , $nom , $descr , $sourcefile , $connect = '' )

Paramètres

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

Package

Proposer une amélioration

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

Proposer une amélioration

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

Proposer une amélioration
void public_compiler_dist( $squelette , $nom , $gram , $sourcefile , $connect = '' )

Paramètres

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

Package

Proposer une amélioration

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

Proposer une amélioration

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

Proposer une amélioration

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

Proposer une amélioration