PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのコールバック(Callables)とは?定義と基本的な使い方を解説


コールバック(Callback)の定義と使い方

コールバックは、PHPにおける疑似型(pseudo-type)の一つです。PHP 5.4以降では、これに相当する「Callable」という型宣言が導入されました。ある値が「呼び出し可能(callable)」であるということは、それが関数として実行できることを意味します。コールバックとして扱えるのは、PHPの組み込み関数、ユーザー定義関数、さらに任意のクラス内で定義されたメソッドなどです。

ある識別子が呼び出し可能かどうかを調べるには is_callable() 関数を使用します。また、PHPには関数名を文字列として受け取り、その関数を実行する call_user_func() 関数も用意されています。

まず、組み込み関数がコールバックとして扱えることを確認してみましょう。

例1:組み込み関数がコールバックかどうかを判定する

<?php
var_dump (is_callable("abs"));
?>

出力結果

上記のコードを実行すると、次の結果が出力されます。

bool(true)

続いて、ユーザー定義関数がコールバックとして呼び出せるかどうかを確認する例です。

例2:ユーザー定義関数の場合

<?php
function myfunction(){
    echo "Hello World";
}
echo is_callable("myfunction") . "\n";
call_user_func("myfunction");
?>

出力結果

上記のコードを実行すると、次の結果が出力されます。

1
Hello World

オブジェクトのメソッドをコールバックとして渡す場合は、オブジェクト自身とメソッド名の2つの要素を持つ配列として指定します。

例3:オブジェクトのメソッドを渡す

<?php
class myclass{
    function mymethod(){
        echo "This is a callable" . "\n";
    }
}
$obj=new myclass();
call_user_func(array($obj, "mymethod"));
// リテラル形式の配列として渡す場合
call_user_func([$obj, "mymethod"]);
?>

出力結果

上記のコードを実行すると、次の結果が出力されます。

This is a callable
This is a callable

クラスの静的メソッドも同様にコールバックとして渡すことができます。この場合、配列の最初の要素にはオブジェクトではなくクラス名を指定します。

例4:静的メソッドを渡す

<?php
class myclass{
    static function mymethod(){
        echo "This is a callable" . "\n";
    }
}
$obj=new myclass();
call_user_func(array("myclass", "mymethod"));
// スコープ解決演算子を使用する場合
call_user_func("myclass::mymethod");
?>

出力結果

上記のコードを実行すると、次の結果が出力されます。

This is a callable
This is a callable

まとめ

PHPのコールバックは、「関数名の文字列」「オブジェクトとメソッド名を含む配列」「クラス名と静的メソッド名を含む配列」「クラス名::メソッド名 形式の文字列」など、複数の方法で表現できます。is_callable() で事前に呼び出し可能かを判定し、call_user_func() や array_map() などの高階関数に渡すことで、柔軟で再利用性の高いコードを実現できます。

  1. PHPのlog()関数とは?自然対数の計算方法と使い方を解説

    定義と使い方log() 関数は、数値の自然対数(natural logarithm)を計算します。対数とは、指数関数の逆演算のことです。たとえば 102=100 という関係は「log10100=2」と表せます。自然対数はオイラー数 e を底として計算され、PHP では定義済み定数 M_E によって e の値(2.7182818284590452354)が提供されています。具体例を挙げると、exp(4.60517018599)=100(つまり e4.60517018599=100)が成り立つため、loge100=4.60517018599 となります。PHP では、この自然対数(loge)を l

  2. PHPのlcg_value()関数とは?乱数生成の基本と使い方を解説

    lcg_value()関数の定義と使い方lcg_value()関数は、0から1までの範囲でランダムな数値(浮動小数点数)を生成するPHP組み込み関数です。「LCG」とは「線形合同法(Linear Congruential Generator)」の略称です。この手法は、不連続な区分線形方程式を用いて擬似乱数列を計算するアルゴリズムで、擬似乱数生成アルゴリズムの中でも最も古くから知られているものの一つです。構文lcg_value ( void ) : floatパラメータこの関数は引数を受け取りません。戻り値lcg_value()関数は、0.0以上1.0以下の範囲にある擬似乱数のfloat値を返し