Maison  >  Article  >  développement back-end  >  Fonction anonyme PHP

Fonction anonyme PHP

王林
王林original
2024-08-29 12:47:23452parcourir

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és

Commencez 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 types de cas d'utilisation

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 :

1. Cas d'utilisation 1

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 :

Fonction anonyme PHP

2. Cas d'utilisation 2

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 :

Fonction anonyme PHP

3. Cas d'utilisation 3

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 :

Fonction anonyme PHP

4. Cas d'utilisation 4

À 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 :

Fonction anonyme PHP

5. Cas d'utilisation 5

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 :

Fonction anonyme PHP

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 :

Fonction anonyme PHP

Remarque supplémentaire

  • La liaison automatique de la classe actuelle à une fonction anonyme est le comportement par défaut à partir de la version 5.4 de PHP. Cela peut être interdit en implémentant une fonction anonyme statique.
  • Il améliore les performances car il peut être utilisé pour définir une fonction qui n'est destinée à être utilisée qu'une seule fois. La fonction anonyme ne peut être disponible que pour le travail qui doit être exécuté à partir de la fonction, et ne reste pas disponible pour le reste du code.
  • Lorsqu'une fonction anonyme est utilisée pour attribuer des valeurs à une variable, PHP se charge de convertir automatiquement l'expression en instance de classe interne Closure.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Fonction Date en PHPArticle suivant:Fonction Date en PHP