1

我有一个 PHP 函数,它可以接受可变数量的参数(我func_get_args()用来处理它们)

class Test {

    private $ting = FALSE;

    public function test() {
        $args = func_get_args();
        if ($this->ting) {
            var_dump($args);
        } else {
            $this->ting = TRUE;
            $this->test($args); //I want to call the function again using the same arguments. (this is pseudo-code)
        }
    }

}

这个函数不是递归的(“$ting”变量阻止它多次运行)。

我希望 test() 使用它给出的相同参数来调用自己。例如: Test->test("a", "b", "c");将输出以下内容:

array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" }

4

2 回答 2

2

对于只想简单回答标题中问题的任何人,这将使用传递给它的相同参数调用当前类方法:

call_user_func_array([ $this, __FUNCTION__ ], func_get_args());

或者,如果它是一个简单的函数(不是类中的方法),您可以这样做:

call_user_func_array(__FUNCTION__, func_get_args());
于 2017-12-06T00:48:37.537 回答
0

使用call_user_func_array.

例子:

class TestClass {

    private $ting = FALSE;

    public function test() {
        $args = func_get_args();
        if ($this->ting) {
            var_dump($args);
        } else {
            $this->ting = TRUE;
            call_user_func_array(array($this, 'test'),$args);
        }
    }

}

$test = new TestClass();

//Outputs array(3) { [0]=> string(6) "apples" [1]=> string(7) "oranges" [2]=> string(5) "pears" }
$test->test("apples","oranges","pears");
于 2013-07-11T23:30:42.027 回答