Maison > Article > développement back-end > Fonction anonyme PHP
La fonction qui peut être créée sans nom spécifique et utilisée comme argument d'entrée dans le script PHP est connue sous le nom de fonction anonyme. Ces fonctions sont implémentées à l’aide de la classe Closure. Le processus d'attribution d'une fonction anonyme à une variable est le même que toute autre syntaxe d'affectation. En passant une variable de la portée parent à la construction du langage d'utilisation, une fonction anonyme de la portée enfant peut hériter de la variable.
PUBLICITÉ Cours populaire dans cette catégorie DEVELOPPEUR PHP - Spécialisation | Série de 8 cours | 3 tests simulésCommencez votre cours de développement de logiciels libres
Développement Web, langages de programmation, tests de logiciels et autres
Syntaxe :
Une fonction anonyme ne porte aucun nom :
function($arg1,$arg2,….,$argN){ //The definition for the anonymous function };
Différents objectifs peuvent être atteints en utilisant une fonction anonyme pour développer un codage PHP efficace. Une fonction anonyme présente différentes fonctionnalités basées sur différents types de cas d'utilisation pour lesquels la fonction est utilisée.
Cinq cas d'utilisation majeurs sont présentés ci-dessous :
La fonction anonyme peut être utilisée pour attribuer des valeurs aux variables. Il suit la même syntaxe que les autres opérations d'affectation.
Exemple :
L'extrait de code ci-dessous est utilisé pour attribuer la valeur d'entrée donnée à une valeur de sortie et imprimer la valeur à l'aide de la variable de sortie.
Code :
<?php $Var = function($value) //Anonymous function is used to assign value to variable $Var { //Anonymous function definition printf("The assigned value is: %s\r\n", $value); }; //Calling the anonymous function using the assigning variable $Var with a string value input $Var('A string value is assigned'); //Calling the anonymous function using the assigning variable $Var with a integer value input $Var(35); ?>
Sortie :
Les valeurs d'entrée données de type chaîne et entier sont imprimées via l'appel de fonction anonyme comme indiqué ci-dessous :
La fonctionnalité de définition d'une fonction anonyme joue un rôle important dans la création d'une fonction de rappel en ligne.
Dans ce cas, la fonction anonyme peut être transmise à une autre fonction comme argument d'entrée.
Le code ci-dessous est écrit pour définir une fonction de rappel preg_replace_callback.
Avoir une fonction anonyme comme l'un de ses paramètres d'entrée.
Code :
<?php //creating callback function using PHP anonymous function // preg_replace_callback is the calling function echo preg_replace_callback('~-([a-z])~', function ($input) { //Anonymous function definition return strtoupper($input[1]); }, 'This is an anonymous callback function!');//End of the definition of the callback function ?>
Sortie :
Lors de l'exécution du script PHP, la fonction de rappel est déclenchée et la sortie de la fonction anonyme est imprimée sur la fenêtre de sortie comme indiqué ci-dessous :
La fonction anonyme peut être utilisée pour hériter d'une variable de la portée parent.
Ce cas d'utilisation ne prend pas en charge les variables super globales, $this variable ou toute variable paramètre ayant le même nom.
Exemple :
Code :
<?php $input_text = 'Initial message'; $outputVar = function () { //Anonymous function definition var_dump($input_text); }; $outputVar(); // Inherit the variable $input_text by value $outputVar = function () use ($input_text) { var_dump($input_text); }; $outputVar(); // Inherit the variable $input_text by-reference $outputVar = function () use (&$input_text) { var_dump($input_text); }; $outputVar(); // Modifying the variable value of parent scope from the function call $input_text = ' Next message'; $outputVar(); // Inserting regular argument along with parent scope variable $outputVar = function ($arg) use ($input_text) { var_dump($arg . ' ' . $input_text); }; $outputVar("Random message"); ?>
Sortie :
La sortie résultante du code ci-dessus est produite comme indiqué ci-dessous :
À partir de la version PHP 5.4, en cas de déclaration d'une classe, la classe est liée par défaut à la fonctionnalité de fonction anonyme. Cela rend la variable '$this' disponible dans le cadre de toute fonction anonyme définie dans la classe.
Exemple :
Code :
<?php class AnonymousClass { public function Classfunction() { return function() { var_dump($this); //Retrieves the dump information of class object using $this variable,once //it is created }; } } $Classobject = new AnonymousClass; $function = $Classobject->Classfunction(); $function(); ?>
Sortie :
Les informations de vidage de l'objet de la classe « AnonymousClass » sont imprimées sur la fenêtre de sortie comme indiqué ci-dessous :
Lors de la création d'un objet, si une fermeture est instanciée à partir de la portée du même objet et est enregistrée, elle crée une référence circulaire qui entraîne l'empêchement de la destruction immédiate de l'objet. L'application d'une fonction anonyme statique peut permettre au script de surmonter le retard.
L'analyse comparative de l'utilisation de la fonction anonyme régulière et de la fonction anonyme statique est démontrée par l'exemple ci-dessous.
Exemple :
Cas 1 : Sans utiliser de fonction anonyme statique
Code :
<?php class TrialClass { private $AnonymousVar; public function __construct() { $this->AnonymousVar = function () { }; } public function __destruct() { echo "Destruction function is called"; } } new TrialClass; echo "After the object is being defined"; echo "\n"; ?>
Sortie :
Cas 2 : Y compris la fonction anonyme statique
Code :
<?php class TrialClass { private $AnonymousVar; public function __construct() { $this->closure = self::createClosure(); } public static function createClosure() { return function () { }; } public function __destruct() { echo "Destruction function is called"; } } new TrialClass; echo "\n"; echo "\n"; echo "After the object is being defined"; echo "\n"; echo "\n"; ?>
Sortie :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!