PHP コールバック関数のサンプル

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

関連の記事

PHP入門 クラスの仕組みとサンプル

△上に戻る