ホームページ > バックエンド開発 > PHPチュートリアル > PHP コールバック関数の概念と使用法

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

墨辰丷
リリース: 2023-03-26 10:32:02
オリジナル
1317 人が閲覧しました

この記事では、主に 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 を使用する非静的メソッド (オブジェクトを渡す必要がある)、およびクラス内の静的メソッドのコールバックを実装する方法。以下はコードを通過したテストです。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

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

ログイン後にコピー

実行結果:

1

2

3

4

5

6

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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート