ホームページ  >  記事  >  バックエンド開発  >  PHP コールバック関数の概念と使用法

PHP コールバック関数の概念と使用法

墨辰丷
墨辰丷オリジナル
2018-05-17 13:54:371179ブラウズ

この記事では、主に 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__.&#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;));

実行結果:

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 サイトの他の関連記事を参照してください。

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