Maison > développement back-end > Problème PHP > Utilisation de la fonction de rappel php

Utilisation de la fonction de rappel php

王林
Libérer: 2023-05-28 20:14:06
original
788 Les gens l'ont consulté

La fonction de rappel est une technologie très courante dans la programmation PHP, et c'est aussi un problème que les débutants rencontreront d'innombrables fois. Comment utiliser correctement les fonctions de rappel peut rendre votre programme PHP plus flexible et intelligent.

1. Qu'est-ce qu'une fonction de rappel ?

En termes simples, une fonction de rappel est un bloc de code exécutable qui peut être appelé dynamiquement en cas de besoin. À l'origine, il était principalement utilisé pour le traitement d'événements, mais il est désormais également largement utilisé pour implémenter des moteurs de modèles, le traitement de données et d'autres fonctions.

L'un des avantages des fonctions de rappel est l'abstraction. Si vous souhaitez utiliser une interface simple pour permettre aux utilisateurs d'appeler la fonction que vous souhaitez implémenter, vous pouvez fournir une interface via la fonction de rappel et permettre aux utilisateurs de transmettre leurs propres méthodes d'implémentation. Lorsque le programme est en cours d'exécution, votre programme utilise les méthodes transmises pour exécuter des fonctions spécifiques.

2. Scénarios d'utilisation des fonctions de rappel

Les fonctions de rappel ont de nombreux scénarios d'application, qui sont présentés ci-dessous :

  1. Traitement des événements

La fonction de rappel dans le traitement des événements peut être transmise en tant que paramètre à la fonction de traitement des événements, lorsque réponse à l'événement Déclenché automatiquement. Par exemple, sur un site Web PHP, vous pouvez avoir un formulaire qui déclenche un événement lors de sa soumission. Vous souhaitez écrire le code pour traiter le formulaire dans lequel le formulaire est utilisé. À ce stade, vous devez encapsuler le code de traitement dans une fonction de rappel et le transmettre en tant que paramètre à la fonction de traitement du formulaire.

  1. Traitement des données

Les fonctions de rappel peuvent également être utilisées comme paramètres de fonctions de traitement de données, telles que les fonctions de tri de tableaux et les fonctions de filtrage de données. Vous pouvez utiliser des fonctions de rappel pour personnaliser la façon dont un tableau est trié ou pour personnaliser les méthodes de filtrage des données. Par exemple, si vous souhaitez rechercher une valeur spécifique dans un tableau, mais souhaitez également conserver la situation lorsque plusieurs valeurs sont trouvées dans le tableau, vous pouvez écrire une fonction de rappel et utiliser cette fonction lors de la recherche dans le tableau pour tout ajouter. valeurs correspondantes. Retour à un nouveau tableau.

  1. Moteur de modèles

Les fonctions de rappel sont souvent utilisées dans les moteurs de modèles pour développer les instructions et les fonctions personnalisées dans les modèles. Par exemple, la syntaxe de boucle foreach est utilisée dans un modèle pour parcourir les données d'un tableau et les afficher dans le modèle. La raison pour laquelle la syntaxe foreach est prise en charge est qu'une fonction de rappel est utilisée en interne pour implémenter le parcours des données.

3. Comment définir les fonctions de rappel

Comment définir et utiliser les fonctions de rappel en PHP ? C'est en fait très simple. En PHP, les fonctions de rappel peuvent être soit des fonctions normales, soit des fonctions anonymes.

  1. Définissez une fonction normale comme fonction de rappel

Exemple de code :

<?php
function my_callback_function() {
    echo 'Hello World!';
}

call_user_func('my_callback_function');
?>
Copier après la connexion

La sortie de ce code est : Hello World !

  1. Définissez une fonction anonyme comme fonction de rappel

Exemple de code :

<?php
$my_callback = function () {
    echo 'Hello World!';
};

call_user_func($my_callback);
?>
Copier après la connexion

La sortie de ce code est : Hello World !

Un moyen encore plus simple consiste à utiliser les fonctions fléchées.

Exemple de code :

<?php
call_user_func(fn() => 'Hello World!');
?>
Copier après la connexion

Le résultat de sortie de ce code est également : Hello World !

4. Comment utiliser la fonction de rappel

Lorsque vous utilisez la fonction de rappel, vous pouvez utiliser les fonctions intégrées de PHP call_user_func() et call_user_func_array().

  1. Méthode d'utilisation call_user_func()

La fonction call_user_func() est utilisée pour appeler la fonction de rappel et transmettre les paramètres en tant que paramètres de la fonction. La syntaxe de cette fonction est la suivante :

mixed call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] )
Copier après la connexion

Remarque : Le paramètre de rappel doit ici transmettre le nom de la fonction de rappel ou de la fonction de rappel stockée dans une variable.

Exemple de code :

<?php
function my_callback_function($string) {
    echo 'Hello ' . $string . "
";
}

call_user_func('my_callback_function', 'World');
?>
Copier après la connexion

Le résultat de sortie de ce code est : Hello World
.

  1. Comment utiliser call_user_func_array()

La fonction call_user_func_array() est similaire à la fonction call_user_func(), mais elle utilise un tableau comme paramètre de la fonction de rappel. La syntaxe de cette fonction est la suivante :

mixed call_user_func_array ( callable $callback , array $param_arr )
Copier après la connexion

Remarque : Le paramètre de rappel doit ici transmettre le nom de la fonction de rappel ou de la fonction de rappel stockée dans une variable.

Exemple de code :

<?php
function product($a, $b)
{
    return $a * $b;
}

// 回调函数作为参数
echo call_user_func_array('product', array(4, 5)) . "
";
?>
Copier après la connexion

La sortie de ce code est : 20.

5. Cas d'application de la fonction de rappel

  1. Tri de tableau

Dans la fonction de tableau, la fonction de rappel peut trier le tableau selon la méthode spécifiée en spécifiant la fonction de comparaison. Par exemple, nous voulons organiser un tableau du plus petit au plus grand :

Exemple de code :

<?php
function cmp($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

$a = array(3, 2, 5, 6, 1);
usort($a, 'cmp');

print_r($a);
?>
Copier après la connexion

La fonction usort() est utilisée ici pour trier le tableau, où le premier paramètre est le tableau à trier, et le le deuxième paramètre est la fonction de rappel.

Le résultat de sortie de ce code est : Array ([0] => 1 [1] => 2 [2] => 3 [3] => 5 [4] => 6 ).

  1. Filtrage des données

Dans la fonction de filtrage des données, la fonction de rappel peut filtrer les données du tableau selon la méthode spécifiée en spécifiant la fonction de filtrage. Par exemple, nous voulons filtrer les nombres dans un tableau :

Exemple de code :

<?php
function is_number($var) {
    if (is_numeric($var)) {
        return true;
    } else {
        return false;
    }
}

$array = array(1, 'abc', 2, 'def', 3, 'ghi');
var_dump(array_filter($array, 'is_number'));
?>
Copier après la connexion

Dans le code ci-dessus, la fonction array_filter() est utilisée. Le premier paramètre de la fonction est le tableau et le deuxième paramètre est. la fonction de rappel. , indiquant que seules les données qui satisfont aux conditions de la fonction is_number() sont renvoyées.

La sortie de ce code est : array(3) { [0]=> int(1) [2]=>

  1. 模板引擎

在模板引擎中,回调函数往往用来扩充模板中的标签。例如我们现在要开发一个简单的模板引擎,实现将模板中的include标签替换为使用PHP include函数的功能:

示例代码:

<?php
function replace_include($template) {
    $template = preg_replace_callback('#{{include file=(.*?)}}#', function($match) {
        return "<?php include ".trim($match[1])."; ?>";
    }, $template);

    return $template;
}

$template = '{{include file="included.php"}}';
$template = replace_include($template);

echo $template;
?>
Copier après la connexion

在上面的代码中,使用了preg_replace_callback()函数,该函数的第一个参数为正则表达式,第二个参数回调函数。该回调函数将匹配到的值替换为PHP include函数。

该代码的输出结果为:

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal