目次
コールバック関数とは
- 関数やメソッドを引数として別の関数に渡し、その中で呼び出す仕組みのことです。
- 関数の実行タイミングをコントロールできます。
コールバック関数のサンプルです。
<?php
//コールバック関数
function testfunc1() {
echo "Hello World";
}
function testfunc2($callback1) {
$callback1();
}
testfunc2("testfunc1"); //Hello World
?>
4~6行目は、コールバック関数です。
12行目で、8行目の関数を実行します。引数として4~6行目のコールバック関数をセットしています。
8行目で引数として受け取ったコールバック関は、9行目で実行されます。
call_user_func (コールバック関数を呼び出すための関数)
call_user_func ( callable $callback [, mixed $... ] ) : mixed |
call_user_func関数は、コールバック関数を呼びます。
<?php
class Color
{
public function getColor()
{
echo "red";
}
}
function testfunc1($array1)
{
call_user_func($array1);
}
$c1 = new Color();
testfunc1(array($c1, "getColor")); # red
?>
2~8行目は、クラスです。
12行目は、call_user_func関数です。
16行目は、10行目の関数を呼び出しています。
対象がオブジェクトの場合は、配列のarrayを使用します。
1つめの要素はオブジェクトで、2つめの要素はメソッド名を指定します。
call_user_funcで引数がある場合
<?php
class Color
{
public function getColor($color1)
{
echo "red and " . $color1;
}
}
function testfunc1($array1,$str1)
{
call_user_func($array1,$str1);
}
$c1 = new Color();
testfunc1(array($c1, "getColor"),"blue"); # red and blue
?>
16行目は、引数の文字列がひとつあります。
call_user_func_array (引数が配列の場合)
call_user_func_array ( callable $callback , array $param_arr ) : mixed |
call_user_func_array関数は、引数が複数あるコールバック関数に対応できます。
<?php
class Color
{
public function getColor($color1,$color2)
{
echo $color1 . " and " . $color2;
}
}
function testfunc1($array1,$array2)
{
call_user_func_array($array1,$array2);
}
$c1 = new Color();
testfunc1(array($c1, "getColor"),array("blue","green")); # blue and green
?>
12行目は、call_user_func_array関数です。
16行目は、10行目の関数を呼び出しています。
1つめの配列のarrayは、オブジェクトとそのメソッドを指定しています。
2つめの配列のarrayは、コールバック関数の2つの引数を指定しています。
関連の記事