我正在研究一个项目,我想尝试'延迟加载'对象。
我使用Magic Method __call($ name,$ arguments)设置了一个简单的类。
我要做的是传递$参数,而不是作为数组,而是作为变量列表:
public function __call($name, $arguments)
{
// Include the required file, it should probably include some error
// checking
require_once(PLUGIN_PATH . '/helpers/' . $name . '.php');
// Construct the class name
$class = '\helpers\\' . $name;
$this->$name = call_user_func($class.'::factory', $arguments);
}
但是,在上面实际调用的方法中,$ arguments作为数组传递而不是单个变量E.G。
public function __construct($one, $two = null)
{
var_dump($one);
var_dump($two);
}
static public function factory($one, $two = null)
{
return new self($one, $two);
}
返回:
array
0 => string '1' (length=1)
1 => string '2' (length=1)
null
这是否有意义,是否有人知道如何实现我的目标?
答案 0 :(得分:3)
尝试:
$this->$name = call_user_func_array($class.'::factory', $arguments);
而不是:
$this->$name = call_user_func($class.'::factory', $arguments);