#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__.'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'));
この記事は、https://blog.csdn.net/u010544319/article/details/9186323
から転載されたものです。推奨チュートリアル: 「
PHP チュートリアル」
以上がPHPのコールバック関数のコード分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。