Télécharger FAQ
 

Le module DEFUNC propose plusieurs fonctions pour manipuler des "macros".

Il offre les fonctions suivantes:

Astuce :


defunc

La fonction ~defunc() permet de déclarer une fonction "macro".

Elle prend 2 arguments :

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 :

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")

sparam_num

La fonction ~sparam_num() permet de récupérer le nombre de paramètres passés à une "macro".

Exemple :

~defunc('ma_fonction',"le nombre de paramètres passés à ma_fonction est ~sparam_num()")

~ma_fonction("abc","abcdef")

retournera:

le nombre de paramètres passés à ma_fonction est 2

mapparam

La fonction ~mapparam() permet d'affecter les paramètres donnés à une "macro" à des variables globales.

Elle prend en paramètre(s) le nom des variables à affecter.

Exemple :

~defunc('ma_fonction2',
   {
     ~mapparam('var1','var2','var3'),
     <![TEXT[
       les paramètres passés sont :
          var1: ~get('var1')
          var2: ~get('var2')
          var3: ~get('var3')
       ]TEXT]>
   }
)
~ma_fonction2("paramètre1","paramètre2")

retournera:

       les paramètres passés sont :
          var1: paramètre1
          var2: paramètre2
          var3: 
       

mapparaml

La fonction ~mapparaml() permet d'affecter les paramètres donnés à une "macro" à des variables locales.

Elle prend en paramètre(s) le nom des variables à affecter.

Sont fonctionnement est identique à ~mapparam() à part que les variables affectées seront locales au lieu d'être globales.

function_exists

La fonction ~function_exists() permet de savoir si une fonction existe ou non.

Elle prend en paramètre le nom de la fonction à tester.

Sont fonctionnement est similaire à la fonction PHP du même nom mais la fonction Templeet teste à la fois les macros définies par l'utilisateur, les fonctions Templeet ainsi que les fonctions PHP.

anonfunc

La fonction ~anonfunc() permet de créer une fonction anonyme.

Une fonction anonyme est une fonction qui n'a pas de nom mais dont on peut affecter le code à une variable pour une utilisation ultérieure.

~set("mafonction",~anonfunc("ceci est une fonction anonyme"))

evalanonfunc

La fonction ~evalanonfunc() permet d'utiliser une fonction anonyme.

~set("mafonction",~anonfunc("ceci est une fonction anonyme"))
évaluation de la fonction anonyme stockée dans la variable "mafonction": ~evalanonfunc(~get("mafonction"))

retournera:

évaluation de la fonction anonyme stockée dans la variable "mafonction": ceci est une fonction anonyme

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 fonctionne pas !

	~defunc("mafonction",
		'~rem(' 
			~set("a", )
			~set("b", )
			~set("res", ~plus(~get("a"), ~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(~get("a"), ~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
)