目次
はじめに
前回の記事では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のエラーと例外について紹介します。
次回の記事