开发者

pass variables in array as function paramaters?

I have a function that does something similar to this:

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

what I want to do is modify it so I can do something like this

function load_class($name, $vars =开发者_如何学C array()){
  require_once('classes/'.$name.'.php');
  return new $name($array[0], $array[1]);
}

The general gist of it is.

I want to be able to pass in an array of values that, gets used as the parameters for the class.

I dont want to pass in the actual array.

is this possible?


Of course, it's called var args and you want to unpack them. http://php.net/manual/en/function.func-get-arg.php. Check out the examples... unpacking an array of arguments in php.

See Also How to pass variable number of arguments to a PHP function


if you are trying to load classes then you could use __autoload function

more information here


You can call functions this way with call_user_func_array, but in the case of a class constructor, you should use 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);

Your code might look like this:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜