3

次のようなコードを見つけました。

function function_1($callback) 
{
    // not related code removed

    $callback($p);

}

この関数を呼び出す方法は? パラメータには何を入れ$callbackますか?

という関数を使いたいとしましょうfunction_2($p)

4

4 に答える 4

4

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'));
    }
}
于 2013-07-27T18:56:42.503 に答える
1

Run it:

function function_2() 
{
    echo 'done';

}


function function_1($callback) 
{
    // not related code removed

    call_user_func($callback);

}

function_1("function_2");
于 2013-07-27T18:55:06.630 に答える
0
function test($param)
{
}

function function_1($callback) 
{
    // not related code removed

    $callback($p);

}

function_1("test")
于 2013-07-27T18:52:34.563 に答える
0

古いphpバージョンでは、次のように呼び出します

function_1("function_2");

しかし、php 5.3では、次のことができます

$function_2 = function($p) {
};

function_1($function_2);

詳細については、PHP マニュアルの匿名関数コールバックcall_user_funcを参照してください。

于 2013-07-27T18:52:44.780 に答える