gpt4 book ai didi

PHP __call() 魔术方法解析参数

转载 作者:行者123 更新时间:2023-12-04 04:36:34 26 4
gpt4 key购买 nike

我正在做一个项目,我想尝试“延迟加载”对象。

我已经使用魔术方法 __call($name, $arguments) 设置了一个简单的类。

我想要做的是传递 $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 作为数组而不是单个变量传递,例如
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

这是否有意义,有谁知道如何实现我想要的目标?

最佳答案

尝试:

$this->$name = call_user_func_array($class.'::factory', $arguments);

而不是:
$this->$name = call_user_func($class.'::factory', $arguments);

关于PHP __call() 魔术方法解析参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19657076/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com