次のようなコードを見つけました。
function function_1($callback)
{
// not related code removed
$callback($p);
}
この関数を呼び出す方法は? パラメータには何を入れ$callback
ますか?
という関数を使いたいとしましょうfunction_2($p)
。
PHPドキュメントから直接、必要な完全な説明を次に示します: Callbacks。
PHP 5.3 以降を使用している場合は、ラムダ (別名匿名関数) を渡すことができます。
<?php function_1(function ($p) { ... });
以前のバージョンの php のサポートが必要な場合は、通常の関数またはインスタンス メソッドを定義する必要があります。あなたが示したコードは$callback()
の代わりに使用しているので、call_user_func($callback)
これは必要ありません。
<?php
// without a class
function function_2 ($p) { ... }
function_1('function_2');
// with a class
class A {
public function function_2 ($p) { ... }
public function doIt () {
function_1(array($this, 'function_2'));
}
}
Run it:
function function_2()
{
echo 'done';
}
function function_1($callback)
{
// not related code removed
call_user_func($callback);
}
function_1("function_2");
function test($param)
{
}
function function_1($callback)
{
// not related code removed
$callback($p);
}
function_1("test")
古いphpバージョンでは、次のように呼び出します
function_1("function_2");
しかし、php 5.3では、次のことができます
$function_2 = function($p) {
};
function_1($function_2);
詳細については、PHP マニュアルの匿名関数、コールバック、call_user_funcを参照してください。