Proposer une amélioration de commentaire

Le commentaire à poster est au format «docblock» (de phpDoc) qui peut être enrichi de tags spécifiques pour SPIP.
Fichier
ecrire/public/references.php
Fonction
calculer_balise_dynamique

    Nom ou pseudo de l'auteur de la proposition

Code original

/**
 * Calcule le code PHP d'exécution d'une balise SPIP dynamique
 *
 * Calcule les balises dynamiques, notamment les `formulaire_*`.
 *
 * Inclut le fichier associé à son nom, qui contient la fonction homonyme
 * donnant les arguments à chercher dans la pile, et qui sont donc compilés.
 *
 * On leur adjoint les arguments explicites de la balise (cf `#LOGIN{url}`)
 * et d'éventuelles valeurs transmises d'autorité par la balise.
 * (cf http://core.spip.net/issues/1728)
 *
 * La fonction `executer_balise_dynamique()` définie par la
 * constante `CODE_EXECUTER_BALISE` recevra à l'exécution la valeur de tout ca.
 *
 * @uses collecter_balise_dynamique()
 *     Qui calcule le code d'exécution de chaque argument de la balise
 * @see  executer_balise_dynamique()
 *     Code PHP produit qui chargera les fonctions de la balise dynamique à l'exécution,
 *     appelée avec les arguments calculés.
 * @param Champ $p
 *     AST au niveau de la balise
 * @param string $nom
 *     Nom de la balise dynamique
 * @param array $l
 *     Liste des noms d'arguments (balises) à collecter
 * @param array $supp
 *     Liste de données supplémentaires à transmettre au code d'exécution.
 * @return Champ
 *     Balise complétée de son code d'exécution
 **/
function calculer_balise_dynamique($p, $nom, $l, $supp = array()) {
 
	if (!balise_distante_interdite($p)) {
		$p->code = "''";
 
		return $p;
	}
	// compatibilite: depuis qu'on accepte #BALISE{ses_args} sans [(...)] autour
	// il faut recracher {...} quand ce n'est finalement pas des args
	if ($p->fonctions and (!$p->fonctions[0][0]) and $p->fonctions[0][1]) {
		$p->fonctions = null;
	}
 
	if ($p->param and ($c = $p->param[0])) {
		// liste d'arguments commence toujours par la chaine vide
		array_shift($c);
		// construire la liste d'arguments comme pour un filtre
		$param = compose_filtres_args($p, $c, ',');
	} else {
		$param = "";
	}
	$collecte = collecter_balise_dynamique($l, $p, $nom);
 
	$p->code = sprintf(CODE_EXECUTER_BALISE, $nom,
		join(',', $collecte),
		($collecte ? $param : substr($param, 1)), # virer la virgule
		memoriser_contexte_compil($p),
		(!$supp ? '' : (', ' . join(',', $supp))));
 
	$p->interdire_scripts = false;
 
	return $p;
}

Le commentaire au format « docblock » peut être complété des éléments suivants sécifiques
à SPIP.

Sur un entête de fichier :

  • @package SPIP\Core\x (pour un fichier du core, x dépendant du fichier)
  • @package SPIP\Nom\x (pour un fichier de plugin, Nom étant le nom du plugin)

Sur un entête de fonction :

  • @pipeline x : indique que la fonction est une utilisation d’un pipeline
  • @pipeline_appel x : indique que la fonction appelle le pipeline indiqué
  • @balise : indique que la fonction est une compilation de balise
  • @filtre : indique un |filtre
  • @critere : indique que la fonction est une compilaiton de critère
  • @boucle : indique que la fonction est une compilaiton de boucle
Vous inscrire sur ce site

L’espace privé de ce site est ouvert aux visiteurs, après inscription. Une fois enregistré, vous pourrez consulter les articles en cours de rédaction, proposer des articles et participer à tous les forums.

Identifiants personnels

Indiquez ici votre nom et votre adresse email. Votre identifiant personnel vous parviendra rapidement, par courrier électronique.