PHP
PHP / MySql

Recherche
 
ManuelPHP.com

call_user_func
<<<
create_function func_get_arg
>>>

8.41 Fonctions
8 Référence des fonctions
 Manuel PHP

Introduction
Pré-requis
Installation
Configuration à l'exécution
Constantes pré-définies
call_user_func_array
call_user_func
->create_function
func_get_arg
func_get_args
func_num_args
function_exists
get_defined_functions
register_shutdown_function
register_tick_function
unregister_tick_function

8.41.8 create_function()Crée une fonction anonyme (style lambda)

[ Exemples avec create_function ]   PHP 4 >= 4.0.1, PHP 5

string  create_function ( string   args , string   code )

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.

Création d'une fonction anonyme avec create_function

<?php
$newfunc
= create_function('$a,$b', 'return "ln($a) + ln($b) = " . log($a * $b);');
echo
"Nouvelle fonction anonyme : $newfunc\n";
echo
$newfunc(2,M_E)."\n";
// affichera :
// Nouvelle fonction anonyme : lambda_1
// ln(2) + ln(2.718281828459) = 1.6931471805599
?>

Ou, pour pouvoir appliquer une fonction générique à une liste d'arguments.

Traitement générique par fonction avec create_function

<?php
function process($var1, $var2, $farr)
{
    foreach (
$farr as $f) {
       echo
$f($var1, $var2) . "\n";
    }
}

// Création d'une série de fonction mathématiques
$f1 = 'if ($a >=0) {return "b*a^2 = ".$b*sqrt($a);} else {return FALSE;}';
$f2 = "return \"min(b^2+a, a^2,b) = \".min(\$a*\$a+\$b,\$b*\$b+\$a);";
$f3 = 'if ($a > 0 && $b != 0) {return "ln(a)/b = ".log($a)/$b; } else {return FALSE;}';
$farr = array(
    
create_function('$x,$y', 'return "un peu de trigo : ".(sin($x) + $x*cos($y));'),
    
create_function('$x,$y', 'return "une hypoténuse: ".sqrt($x*$x + $y*$y);'),
    
create_function('$a,$b', $f1),
    
create_function('$a,$b', $f2),
    
create_function('$a,$b', $f3)
    );
    
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);
?>

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

Utilisation de fonctions anonymes comme fonction de callback

<?php
$av
= array("la ","une ","cette ","une certaine ");
array_walk($av, create_function('&$v,$k','$v = $v."maison";'));
print_r($av);  
?>

<< create_function >>
call_user_func Fonctions func_get_arg





Google

Services webmasters

Les manuels
 

ManuelPHP.com © 2003-2012 Tigersun - Crédits
Webmaster Site Internet - Télécharger des Logiciels - Programme TV - Entraide Informatique - Agence de Communication
2018-04-23