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