Maison  >  Article  >  développement back-end  >  Explication détaillée des fonctions de rappel et des fonctions anonymes en PHP

Explication détaillée des fonctions de rappel et des fonctions anonymes en PHP

小云云
小云云original
2018-02-24 14:44:291312parcourir

Certaines fonctions telles que call_user_func() ou usort() peuvent accepter des fonctions de rappel définies par l'utilisateur comme paramètres. La fonction de rappel peut être non seulement une fonction simple, mais également une méthode objet, y compris des méthodes de classe statique.
Pour faire simple, les paramètres d’une fonction sont aussi une fonction.

Définition de la fonction anonyme :

Les fonctions anonymes, également appelées fermetures, permettent la création temporaire d'une fonction sans nom spécifié. La valeur la plus couramment utilisée comme argument de fonction de rappel. Bien entendu, il existe également d’autres applications.
En termes simples, il s'agit d'une fonction sans nom de fonction

<?phpclass Product{
    public $name;    public $price;    //存储各种回调函数
    private $callbacks;    public function __construct($name,$price)
    {
        $this->name=$name;        $this->price=$price;
    }    //注册回调函数
    function registerCallBack($callback)
    {
        $this->callbacks[]=$callback;
    }    //执行回调函数
    function sale()
    {
        echo "$this->name 开始执行促销信息 $this->price \n";        foreach($this->callbacks as $callback)
        {            //执行回调函数
            $this->price=call_user_func($callback,$this->name,$this->price);
        }        echo "$this->name 促销执行完毕 $this->price \n";
    }
}//提供回调函数class Sale{
    function sale1(){
        //返回匿名函数 各种促销
        return function($name,$price){
            $price-=5;            echo "$name 美女,减5元 变为 $price\r\n";            return $price;
        };
    }    function sale2(){
        return function($name,$price){
            $price-=3;        echo "$name 随便卖,减3元 变为 $price \r\n";            return $price;
        };
    }

}$p=new Product("足球",50);$sale =new Sale();$p->registerCallBack($sale->sale1());$p->registerCallBack($sale->sale2());$p->sale();

Recommandations associées :

Analyse de la fonction de rappel PHP

La signification de la fonction de rappel javascript

Explication détaillée de l'utilisation de la fonction de rappel de la fonction personnalisée PHP

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