PHP函数 - 使用相同(可变数字)参数调用self

时间:2013-07-11 23:10:42

标签: php function arguments

我有一个可以使用可变数量参数的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" }

2 个答案:

答案 0 :(得分:2)

对于正在寻找标题中问题的简单答案的任何人来说,这将使用传递给它的相同参数调用当前的类方法

call_user_func_array(__FUNCTION__, func_get_args());

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

class

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