create_function() crée une fonction anonyme,
à partir des paramètres passés, et retourne
un nom de fonction unique. Généralement, les arguments
args sont présentés sous
la forme d'une chaîne à guillemets simples, et la
même recommandation vaut pour code.
La raison de l'utilisation des guillemets simples est de proteger
les noms de variables du remplacement par leur valeur. Si vous utilisez
les guillemets doubles, n'oubliez pas d'échapper les noms
de variables (i.e. \$avar).
Vous pouvez utiliser cette fonction pour (par exemple) créer
une fonction à partir d'informations récoltées
durant l'exécution.
Exemple 1.
Création d'une fonction anonyme avec create_function()
echo "\nUtilisation de la première liste de fonctions anonymes\n"; echo "paramétres: 2.3445, M_PI\n"; process(2.3445, M_PI, $farr);
// Maintenant une liste de fonction sur chaîne de caractères $garr = array( create_function('$b,$a','if (strncmp($a,$b,3) == 0) return "** \"$a\" '. 'et \"$b\"\n** Ces chaînes de ressemblent!! (regarde les trois premiers caractères)";'), create_function('$a,$b','; return "CRCs: ".crc32($a)." , ".crc32(b);'), create_function('$a,$b','; return "similarité(a,b) = ".similar_text($a,$b,&$p)."($p%)";') ); echo "\nUtilisation de la seconde liste de fonctions anonymes\n"; process("Twas brilling and the slithy toves", "Twas the night", $garr); ?>
L'exemple ci-dessus va afficher :
Utilisation de la première liste de fonctions anonymes
paramétres: 2.3445, M_PI
un peu de trigo : -1.6291725057799
une hypoténuse: 3.9199852871011
b*a^2 = 4.8103313314525
min(b^2+a, a^2,b) = 8.6382729035898
ln(a/b) = 0.27122299212594
Utilisation de la seconde liste de fonctions anonymes
** "Twas the night" et "Twas brilling and the slithy toves"
** Ces chaînes se ressemblent ! (regardez les trois premiers caractères)
CRCs: -725381282 , 1908338681
similarité(a,b) = 11(45.833333333333%)
Mais l'utilisation la plus courante des fonctions lambda est la
fonction de callback, par exemple, lors de l'utilisation de
array_walk() ou usort()
Exemple 3. Utilisation de fonctions anonymes comme fonction de callback