【问题标题】:pass variables in array as function paramaters?将数组中的变量作为函数参数传递?
【发布时间】:2011-06-12 20:26:04
【问题描述】:

我有一个类似的函数:

function load_class($name){
  require_once('classes/'.$name.'.php');
  return new $name();
}

我想做的是修改它,这样我就可以做这样的事情

function load_class($name, $vars = array()){
  require_once('classes/'.$name.'.php');
  return new $name($array[0], $array[1]);
}

它的一般要点是。

我希望能够传入一个值数组,用作类的参数。

我不想传入实际的数组。

这可能吗?

【问题讨论】:

  • 虽然您接受的答案肯定是正确的,但我还是鼓励您按照 bharath 的指示研究类自动加载。从您提供的代码看来,您有点过于复杂了。

标签: php class


【解决方案1】:

【讨论】:

    【解决方案2】:

    如果您尝试加载类,那么您可以使用__autoload 函数

    更多信息here

    【讨论】:

    • 或者更好地使用 spl_autoload_register()。 +1
    【解决方案3】:

    您可以使用call_user_func_array 以这种方式调用函数,但在类构造函数的情况下,您应该使用ReflectionClass::newInstanceArgs

    class MyClass {
       function __construct($x, $y, $z) { }
    }
    
    
    $class = new ReflectionClass("MyClass");
    
    $params = array(1, 2, 3);
    
    // just like "$instance = new MyClass(1,2,3);"
    $instance = $class->newInstanceArgs($params);
    

    您的代码可能如下所示:

    function load_class($name, $vars = array()){
      require_once('classes/'.$name.'.php');
      $class = new ReflectionClass($name);
      return $class->newInstanceArgs($vars);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多