Dans PHP, une fonction peut renvoyer une fonction de rappel, c'est-à-dire que la valeur de retour de la fonction elle-même est une fonction qui peut être appelée. Cette fonctionnalité est très pratique dans de nombreux scénarios, et les éléments suivants introduiront plusieurs scénarios d'application typiques.
De nombreux frameworks et bibliothèques PHP utilisent des fonctions de rappel pour gérer les événements. Par exemple, le système d'événements de Laravel permet l'enregistrement des auditeurs d'événements, et la fonction de rappel correspondante est automatiquement appelée lorsqu'un événement se produit:
// Enregistrer l'auditeur d'événements
Event::listen('user.created', function (User $user) {
// Actions effectuées après la création de l'utilisateur
});
Les fonctions de rappel sont souvent utilisées pour trier les tableaux en fonction des règles personnalisées. L'exemple suivant utilise la fonction USORT pour trier les éléments du tableau par longueur de chaîne:
// Définir une fonction de rappel de comparaison
$compare = function($a, $b) {
return strlen($a) - strlen($b);
};
// Trier les tableaux à l'aide de fonctions de rappel
usort($array, $compare);
Les fonctions de rappel peuvent également être utilisées pour implémenter l'exécution retardée du code. Par exemple, enregistrez une fonction à l'aide de registre_tick_function , déclenchant un appel sur chaque boucle du script:
// Enregistrez une fonction de rappel,Exécuter chaque boucle
register_tick_function(function() {
// Opération déclenchée par chaque boucle
});
Grâce à la fonction de rappel, les éléments d'une collection de tableau ou d'objets peuvent être filtrés. L'exemple suivant montre comment utiliser Array_Filter pour ne préserver que des nombres même dans un tableau:
// Définir la fonction de rappel du filtre
$filter = function($num) {
return $num % 2 === 0;
};
// Tiltrage des tableaux à l'aide de fonctions de rappel
$filtered = array_filter($array, $filter);
Le mécanisme de la fonction PHP renvoyant les fonctions de rappel fournit des capacités d'extension flexibles pour le code, qui se trouve couramment dans des scénarios tels que la réponse des événements, le tri personnalisé, les opérations retardées et le filtrage des données. La maîtrise de ces usages peut aider les développeurs à écrire des programmes plus concis et puissants.