この記事では、主に PHP コールバック関数の概念と使用法を紹介し、コールバック関数の概念と原理を簡単に紹介し、コールバック関数の関連使用スキルを例の形で分析します。
1. コールバック関数の概念 まず、C 言語のコールバック関数を見てみましょう。コールバック関数は、関数ポインタを通じて呼び出される関数です。関数ポインタ (アドレス) をパラメータとして別の関数に渡し、このポインタを使用してそのポインタが指す関数を呼び出す場合、それをコールバック関数と呼びます。コールバック関数は、関数の実装者によって直接呼び出されるのではなく、特定のイベントまたは条件が発生したときに、そのイベントまたは条件に応答するために別のパーティによって呼び出されます。
他の言語のコールバック関数の概念は似ていますが、さまざまな言語のコールバック関数の実装メカニズムは異なります。一般的に、コールバック関数は私たちが定義した関数ですが、私たちが直接呼び出すものではありません。これは、名前とパラメータを受け取ることによってコールバック関数を呼び出す別の関数を通じて呼び出されます。
2. PHP でのコールバック関数の実装 php は、コールバック関数のサポートを提供する 2 つの組み込み関数
を提供します。これら 2 つの関数の違いは、call_user_func_arraycall_user_func()
和call_user_func_array()
がコールバック関数のパラメーターを配列の形式で受け取ることです。それは、そのプロトタイプ: mixed call_user_func_array (callable $callback, array$param_arr) を見ることでわかります。パラメータは 2 つだけです。 call_user_func($callback, パラメータ 1, パラメータ 2,...) のパラメータの数は、コールバック関数のパラメータに従って決定されます。 スクリプト内のグローバル関数、クラス内で $this を使用しない非静的メソッド、クラス内で $this を使用する非静的メソッド (オブジェクトを渡す必要がある)、およびクラス内の静的メソッドのコールバックを実装する方法。以下はコードを通過したテストです。
<?php //普通函数 function f1($arg1,$arg2) { echo __FUNCTION__.'exec,the args is:'.$arg1.' '.$arg2; echo "<br/>"; } //通过call_user_func调用函数f1 call_user_func('f1','han','wen'); //通过call_user_func_array调用函数 call_user_func_array('f1',array('han','wen')); class A { public $name; function show($arg1) { echo 'the arg is:'.$arg1."<br/>"; echo 'my name is:'.$this->name; echo "<br/>"; } function show1($arg1,$arg2) { echo __METHOD__.' exec,the args is:'.$arg1.' '.$arg2."<br/>"; } public static function show2($arg1,$arg2) { echo __METHOD__.' of class A exec, the args is:'.$arg1.' '.$arg2."<br/>"; } } //调用类中非静态成员函数,该成员函数中有$this调用了对象中的成员 $a = new A; $a->name = 'wen'; call_user_func_array(array($a,'show',),array('han!')); //调用类中非静态成员函数,没有对象被创建,该成员函数中不能有$this call_user_func_array(array('A','show1',),array('han!','wen')); //调用类中静态成员函数 call_user_func_array(array('A','show2'),array('argument1','argument2'));
実行結果:
f1exec,the args is:han wen f1exec,the args is:han wen the arg is:han! my name is:wen A::show1 exec,the args is:han! wen A::show2 of class A exec, the args is:argument1 argument2
関連推奨事項:
コード内のコールバック関数を置き換える方法JS コールバック関数の詳細な使用例使用中JS コールバック関数のケースの説明以上がPHP コールバック関数の概念と使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。