0

我有一个脚本,它接受不同数量的参数。

我想使用 func_get_args 对所述参数执行操作。如果我有一个这样的功能:

function Something() {
   foreach(func_get_args($this) as $functions) {
       // Do something
   }

   // Return..
}

例如,我希望能够在另一个函数中调用这个函数来添加/保存条目。添加/保存函数将有参数“标题”、“描述”等。

我基本上想知道是否有办法检测函数调用的上下文。我可以将一些东西传递给 func_get_args 让它知道它在某个函数中被调用吗?所以如果我这样做:

function Save($title, $desc) {
$vars = $this->Something();
}

我想$vars包含$title$desc在修改它们之后。

4

2 回答 2

0

您的函数没有参数,因此无法使用func_get_args.

您可以通过检查backtrace并提取args零件来获得它。

于 2012-11-12T23:09:24.057 回答
0

想通了.. 不漂亮,但它做了我想要的。

private function Handle($Function, $Values) {
        $Method = new ReflectionMethod($this, $Function);
        $Result = array();
        $Inc = 0;

        foreach($Method->getParameters() as $Args) {
            $Result[$Args->getName()] = $this->DB->real_escape_string($Values[$Inc]);
            $Inc++;
        }

        return $Result;
}

function Test($a, $b, $c) {
    $Vars = $this->Handle(__FUNCTION__, func_get_args());
    print_r($Vars);
}

print_r(Test(1, 2, 3));

Array
(
    [a] => 1
    [b] => 2
    [c] => 3
)

我有另一种方法,但必须使用$Vars[0], $Vars[1]等访问数组,我想这样做,这样我就可以使用$Vars['something'], $Vars['something_else'].

于 2012-11-12T23:37:33.077 回答