3

関数の参照を別の関数に引数として渡すにはどうすればよいですか? コールバックを実装しようとしていましたが、前に関数の参照を渡す必要がありますreturnProduct。どうすればよいですか?

<?php
class Tester {
    public function calculate($var_1,$var_2,$var_3) {
        $product = var_3($var_1,$var_2);
        echo $product;
    }

    public function returnProduct($var_1,$var_2) {
        return $var_1*$var_2;   
    }
}

$obj = new Tester();
$obj->calculate(100,2,$obj->returnProduct);
4

2 に答える 2

3

$product =行を次のように変更します。

$product = call_user_func($var_3,$var_1,$var_2);

通話回線を次のように変更します。

$obj->calculate(100,2,array($obj,'returnProduct'));
于 2013-02-18T03:24:16.660 に答える
1

のメソッドのみを使用したい場合はTester、メソッド名を文字列として渡すことができます。

public function calculate($var_1, $var_2, $var_3) {
    $product = $this->$var_3($var_1, $var_2);
    echo $product;
}

次に、それを呼び出します

$obj->calculate(100, 2, 'returnProduct');

注意を怠ると、適切な名前のメソッドを使用してメソッドが存在するかどうかを確認できますmethod_exists()

于 2013-02-18T03:31:38.757 に答える