Note :
Le module DEFUNC propose plusieurs fonctions pour manipuler des "macros".
Il offre les fonctions suivantes:
- defunc : déclare une fonction macro
- call : appel d'une macro
- sparam : récupère les paramètres donnés à une macro
Astuce :
valeur de retour d'une fonction
defunc
La fonction ~defunc() permet de déclarer une fonction "macro".
Elle prend 2 arguments :
- name : le nom de la macro
- code : la fonction de cette macro
Exemple :
~defunc('fonction',~get('valeur'))
Appel d'une macro
L'appel d'une macro se fait exactement de la même manière que pour n'importe quelle autre fonction Templeet. Il suffit de mettre un tilde devant et de passer les paramètres entre parenthèses.
Exemple :
~set("result",~fonction())
sparam
La fonction ~sparam() permet de récupérer les paramètres donnés à une "macro".
Elle accepte un seul paramètre :
- numparam : le numéro du paramètre de la macro.
Exemple :
~defunc('cherche',~preg("~sparam(1)","~sparam(2)")) ~cherche("abc","abcdef")
~sparam(1) va prendre alors la valeur
"abc", et ~sparam(2)
"abcdef".
Le résultat sera donc : ~preg("abc","abcdef")
Astuce
"Définir la valeur de retour d'une fonction" :
Prenons le cas suivant : je souhaite qu'une fonction effectue un certain traitement et renvoie le résultat.
Exemple de script qui ne marche pas !
~defunc("mafonction", '~rem(' ~set("a", ) ~set("b", ) ~set("res", ~plus(, ~get("b"))) ')~array( "a"=>~get("a"), "b"=>~get("b"), "res"=>~get("res") )' ) ~print_r( ~mafonction(3, 7) )
Le rendu de ce script est :
Array
En effet, ce script ne renvoie pas le tableau, mais une chaîne de caractères qui contient "Array".
Pour que la fonction renvoie un tableau, il faut utiliser un bloc "Accolade", comme dans l'exemple suivant :
~defunc("mafonction", { ~set("a", ), ~set("b", ), ~set("res", ~plus(3, ~get("b"))), ~array( "a"=>~get("a"), "b"=>~get("b"), "res"=>~get("res") ) } ) ~print_r( ~mafonction(3, 7) )
Le rendu de ce script est :
Array ( [a] => 3 [b] => 7 [res] => 10 )