我有一个与此类似的功能:
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]);
}
它的一般要点是。
我希望能够传入一个值数组,并将其用作类的参数。
我不想传入实际的数组。
这可能吗?
答案 0 :(得分:2)
当然,它被称为var args,你想解压缩它们。 http://php.net/manual/en/function.func-get-arg.php。查看示例... unpacking an array of arguments in php。
另见How to pass variable number of arguments to a PHP function
答案 1 :(得分:1)
如果您尝试加载类,则可以使用__autoload
函数
更多信息here
答案 2 :(得分:0)
您可以使用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);
}