PHPのコールバック関数のサンプルです。
目次
サンプル | コールバック関数 |
call_user_funcのサンプル | |
call_user_func関数で引数がある場合 | |
call_user_func_arrayのサンプル |
コールバック関数
- オブジェクトや関数が他の関数に引数として渡され、先の関数の中で実行されます。
- 関数の実行タイミングをコントロールできます。
コールバック関数のサンプルです。
<?php
//コールバック関数
function helloWorld1() {
echo "こんにちは";
}
function test1($callback1) {
$callback1();
}
test1("helloWorld1"); //こんにちは
?>
4~6行目は、コールバック関数です。
12行目で、8行目の関数test1を実行します。引数として4~6行目の関数helloWorld1をセットしています。
8行目で引数として受け取った関数helloWorld1は、9行目で実行されます。
call_user_funcのサンプル
call_user_func ( callable $callback [, mixed $... ] ) : mixed |
call_user_func関数は、コールバック関数を呼びます。
<?php
class Color
{
public function getColor()
{
echo "赤です";
}
}
function test1($array1)
{
call_user_func($array1);
}
$c1 = new Color();
test1(array($c1, "getColor")); # 赤です
?>
2~8行目は、クラスです。
12行目は、call_user_func関数です。
16行目は、10行目の関数を呼び出しています。
対象がオブジェクトの場合は、配列のarrayを使用します。
1つめの要素はオブジェクトで、2つめの要素はメソッド名を指定します。
https://www.php.net/manual/ja/function.call-user-func.php
https://www.php.net/manual/ja/language.types.callable.php
call_user_func関数で引数がある場合
<?php
class Color
{
public function getColor($col1)
{
echo $col1 . "です";
}
}
function test1($array1,$str1)
{
call_user_func($array1,$str1);
}
$c1 = new Color();
test1(array($c1, "getColor"),"青"); # 青です
?>
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($col1,$col2)
{
echo $col1 . "と" . $col2 . "です";
}
}
function test1($array1,$str1)
{
call_user_func_array($array1,$str1);
}
$c1 = new Color();
test1(array($c1, "getColor"),array("青", "緑"));#青と緑です
?>
12行目は、call_user_func_array関数です。
16行目は、10行目の関数を呼び出しています。
1つめの配列のarrayは、オブジェクトとそのメソッドを指定しています。
2つめの配列のarrayは、コールバック関数の2つの引数を指定しています。
https://www.php.net/manual/ja/function.call-user-func-array.php
関連の記事