PHP入門

【PHP入門】コールバック関数

2021年7月21日

はじめに

前回の記事ではPHPのstaticプロパティとstaticメソッドについて紹介しました。

本記事では、PHPのコールバック関数について紹介します。

コールバック関数

コールバック関数(英:callback function)とは、関数を呼び出す際に引数として引き渡される別の関数のことです。

以下はコールバック関数のイメージ例です。

コールバック関数

簡単な流れ

  • 引数にコールバック関数Bを指定して関数Aを呼び出す
  • 関数A内で引数として受け取ったコールバック関数Bを呼び出す
  • 関数Bが動き出す

PHPでコールバック関数を使う方法は大きく分けて2つあります。1つは文字列で関数を指定する方法、もう1つは「call_user_func」関数や「call_user_func_array」関数を使う方法です。

スポンサーリンク

文字列でコールバック関数を指定する方法

まずは文字列でコールバック関数を指定する方法です。

次の例では「hello」関数をコールバック関数として「test」関数の引数に指定しています。

[文字列指定の例]

<?php

function hello() {
    print "こんにちは";
}

function test($callback) {
    // コールバック関数を呼び出す
    $callback();
}

test("hello");

?>

[実行結果]

こんにちは

ただし上記の方法は、コールバック関数に引数がある場合は利用できません。

「call_user_func」関数や「call_user_func_array」関数を使用することで引数を渡すことができます。

call_user_func関数を使う方法

「call_user_func」関数の使い方は次のとおりです。

call_user_func関数の書き方

call_user_func ( コールバック関数名, 引数 );

※コールバック関数に引数がない場合は引数を指定しなくてよい、引数が複数ある場合はカンマ区切りで指定

「call_user_func」関数を使うことで、簡単にコールバックを実装できます。

[call_user_func関数の例]

<?php

function hello($a, $b) {
    print "$a<br />$b";
}

call_user_func ("hello", "おはよう", "こんにちは");

?>

[実行結果]

おはよう
こんにちは

call_user_func_array関数を使う方法

「call_user_func_array」関数の使い方は次のとおりです。

call_user_func_array関数の書き方

call_user_func_array( コールバック関数名, 引数※配列 );

「call_user_func_array」関数を使い、第2引数に配列を設定してコールバックを実装することもできます。

[call_user_func_array関数の例]

<?php

function hello($a, $b) {
    print "$a<br />$b";
}

call_user_func_array ("hello", array("おはよう","こんにちは"));

?>

[実行結果]

おはよう
こんにちは

クラス内のメソッドをコールバックとして指定する場合

「call_user_func」関数や「call_user_func_array」関数の第一引数を配列にすることで、クラス内のメソッドをコールバック関数として指定できます。

[クラス内のメソッドを使用する例]

<?php

class Sample
{
    function hello($value) {
        print $value;
    }
}

$sample = new Sample();
call_user_func(array($sample,"hello"), "こんにちは");

?>

[実行結果]

こんにちは

終わりに

本記事では、PHPのコールバック関数について紹介しました。

次回の記事では、PHPのエラーと例外について紹介します。

helpful