将函数的引用作为参数传递

时间:2013-02-18 03:17:13

标签: php

如何将函数的引用作为参数传递给另一个函数?我试图实现一个回调,我之前需要传递函数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);

2 个答案:

答案 0 :(得分:3)

将您的$product =行更改为:

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

将您的主叫行更改为:

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

答案 1 :(得分: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()

检查方法是否存在