大家好我在一个类中有一个函数,它将打印此函数的所有变量传递
课程代码:
<?php
class MyPrintClass {
public function printVaraible() {
var_dump(func_get_args())
}
}
$printVar = new MyPrintClass;
?>
如果我使用下面正确工作并打印所有值都通过。
$print->printVaraible('value1','Value2',20);
我得到的输出高于cmd
array (size=1)
0 => string 'value1' (length=6)
1 => string 'value2' (length=6)
2 => string 'value3' (length=6)
如果我使用像打击它显示为单个数组..我希望价值分开..它是如何可能的?
function getVal(){
global $printVar;
$print->printVaraible(func_get_args());
}
我需要传递如下所示的值
getVal('value1','Value2',20);
我需要输出
array (size=1)
0 => string 'value1' (length=6)
1 => string 'value2' (length=6)
2 => string 'value3' (length=6)
目前我得 NULL 作为输出
根据 deceze给出的答案更新了问题 **我的代码也有一点变化** 课程代码:
<?php
class MyPrintClass {
public function printVaraible($tag,$value) {
echo $tag.' == '.$value;
var_dump(func_get_args());
}
}
$printVar = new MyPrintClass;
?>
通过
将类转换为函数<?php
function getVal($tag,$value) {
global $printVar;
call_user_func_array([$printVar, 'printVariable'], $tag,$value,func_get_args());
}
&GT;
如果我尝试按以下方式使用,我会收到错误
<?php getVal('first','second','third,'fourth'); ?>
Warning: call_user_func_array() expects exactly 2 parameters, 4 given
答案 0 :(得分:1)
call_user_func_array([$print, 'printVariable'], func_get_args());
这将使用数组中的单独参数调用该函数。我会质疑这个的用处,因为你最终会得到func_get_args
的数组。为什么不首先传递数组呢?
答案 1 :(得分:1)
你在返回中得到null,因为你从不返回任何东西,来自上面的函数。
如果你想调用一个类方法,我建议你看看Refection,或者你也可以做
$a = 'printVaraible';
$class->$a(1,3); //
除了使用call_user_func_array之外,我还建议查看闭包(php&gt; 5.3),它会让你以这种方式编写它们。
$a = function foo(){ echo 'foo'};
$a();
最后我通常会避免使用全局,因为它会掩盖代码中的值。将值注入功能范围总是更好,而不是将其与大型项目中的全局影像搜索混合在一起,我只是不惜一切代价避免它们而忘记它们存在。