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 回答