ホームページ >バックエンド開発 >PHPチュートリアル >PHPのコールバック関数と匿名関数について詳しく解説

PHPのコールバック関数と匿名関数について詳しく解説

小云云
小云云オリジナル
2018-02-24 14:44:291351ブラウズ

call_user_func() や usort() などの一部の関数は、ユーザー定義のコールバック関数をパラメーターとして受け入れることができます。コールバック関数は単純な関数だけでなく、静的クラス メソッドなどのオブジェクト メソッドも使用できます。
簡単に言えば、関数のパラメータも関数です。

匿名関数の定義:

匿名関数はクロージャとも呼ばれ、指定された名前なしで関数を一時的に作成できます。コールバック関数の引数として最も一般的に使用される値。もちろん、他のアプリケーションもあります。
簡単に言うと、関数名のない関数です

<?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();

関連おすすめ:

PHPコールバック関数の分析

JavaScriptコールバック関数の意味

PHPのコールバック関数の使い方を詳しく解説カスタム関数

以上がPHPのコールバック関数と匿名関数について詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。