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

烟雨青岚
リリース: 2023-04-08 20:26:01
転載
2298 人が閲覧しました

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

#php のコールバック関数のコード分析

1. コールバック関数の概念

まず、C 言語のコールバック関数を見てみましょう。コールバック関数は、関数ポインタを通じて呼び出される関数です。関数ポインタ (アドレス) をパラメータとして別の関数に渡し、このポインタがそれが指す関数を呼び出すために使用される場合、それをコールバック関数と呼びます。コールバック関数は、関数の実装者によって直接呼び出されるのではなく、特定のイベントまたは条件が発生したときに、そのイベントまたは条件に応答するために別のパーティによって呼び出されます。

他の言語でもコールバック関数の概念は似ていますが、各言語のコールバック関数の実装メカニズムは異なります。一般的にコールバック関数は定義した関数ですが、別の関数を通じてコールバック関数を呼び出す代わりに、この関数はその名前とパラメータを受け取ってコールバック関数を呼び出します。

2. PHP の

コールバック関数には、2 つの組み込み関数

call_user_func() # が用意されています。 ## および call_user_func_array() コールバック関数のサポートを提供します。 これら 2 つの関数の

の違いは、call_user_func_array がコールバック関数のパラメータを配列の形式で受け取ることです。プロトタイプを見るとそれがわかります。 $param_arr ),

パラメータは 2 つだけです ; 一方、 call_user_func($callback, パラメータ 1, パラメータ 2,...) のパラメータの数は のパラメータに従って決まります。コールバック関数。 3. コールバック関数の実装

スクリプトでのグローバル関数、クラス内で $this を使用しない非静的メソッド、および非静的メソッドを実装する方法クラス内で $this を使用するメソッド クラス内の静的メソッド (オブジェクトを渡す必要がある) と静的メソッドのコールバックに関しては、テストに合格したコードは次のとおりです。

<?php   
        //普通函数  
        function f1($arg1,$arg2)  
        {  
            echo __FUNCTION__.&#39;exec,the args is:&#39;.$arg1.&#39; &#39;.$arg2;  
            echo "<br/>";  
        }  
          
        //通过call_user_func调用函数f1  
        call_user_func(&#39;f1&#39;,&#39;han&#39;,&#39;wen&#39;);  
      
            //通过call_user_func_array调用函数  
        call_user_func_array(&#39;f1&#39;,array(&#39;han&#39;,&#39;wen&#39;));  
        class A  
        {  
            public $name;  
      
            function show($arg1)  
            {  
                echo &#39;the arg is:&#39;.$arg1."<br/>";  
                echo &#39;my name is:&#39;.$this->name;  
                echo "<br/>";  
            }  
            function show1($arg1,$arg2)  
            {  
                echo __METHOD__.&#39; exec,the args is:&#39;.$arg1.&#39; &#39;.$arg2."<br/>";  
            }  
            public static function show2($arg1,$arg2)  
            {  
                echo __METHOD__.&#39; of class A exec, the args is:&#39;.$arg1.&#39; &#39;.$arg2."<br/>";  
            }  
      
        }  
        //调用类中非静态成员函数,该成员函数中有$this调用了对象中的成员  
        $a = new A;  
        $a->name = &#39;wen&#39;;         
        call_user_func_array(array($a,&#39;show&#39;,),array(&#39;han!&#39;));
        
        //调用类中非静态成员函数,没有对象被创建,该成员函数中不能有$this
        call_user_func_array(array(&#39;A&#39;,&#39;show1&#39;,),array(&#39;han!&#39;,&#39;wen&#39;));  
 
        //调用类中静态成员函数
        call_user_func_array(array(&#39;A&#39;,&#39;show2&#39;),array(&#39;argument1&#39;,&#39;argument2&#39;));
ログイン後にコピー
皆さん、読んでいただきありがとうございます。多くの利益が得られることを願っています。

この記事は、https://blog.csdn.net/u010544319/article/details/9186323

から転載されたものです。推奨チュートリアル: 「

PHP チュートリアル

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

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート