将动态值从一个函数传递到另一个函数

时间:2014-06-25 08:51:43

标签: php

大家好我在一个类中有一个函数,它将打印此函数的所有变量传递

课程代码:

<?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

2 个答案:

答案 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();

最后我通常会避免使用全局,因为它会掩盖代码中的值。将值注入功能范围总是更好,而不是将其与大型项目中的全局影像搜索混合在一起,我只是不惜一切代价避免它们而忘记它们存在。