我有一个脚本,它接受不同数量的参数。
我想使用func_get_args对所述参数执行操作。如果我有这样一个函数:
function Something() {
foreach(func_get_args($this) as $functions) {
// Do something
}
// Return..
}
我希望能够在例如另一个添加/保存条目的功能中调用此函数。添加/保存功能将包含参数'title','description'等。
我基本上想知道是否有办法检测函数调用的上下文。我可以将一些东西传递给func_get_args,让它知道它在某个函数中被调用吗?所以,如果我这样做:
function Save($title, $desc) {
$vars = $this->Something();
}
我希望$vars
在修改后包含$title
和$desc
。
答案 0 :(得分:0)
您的函数没有参数,因此无法通过func_get_args
获取它。
您可以通过检查backtrace并提取args
部分来获取它。
答案 1 :(得分: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']
。