gpt4 book ai didi

php - 如何用未知参数初始化对象?

转载 作者:搜寻专家 更新时间:2023-10-31 20:53:53 24 4
gpt4 key购买 nike

我正在尝试创建一个类,该类具有使用 PHP 的 __call() 魔术方法调用的方法。然后这个神奇的方法将像这样初始化另一个对象:

public function  __call($function, $arguments) {

/* Only allow function beginning with 'add' */
if ( ! preg_match('/^add/', $function) ) {
trigger_error('Call to undefined method ' . __CLASS__ . '::' . $function, E_USER_ERROR);
}

$class = 'NamodgField_' . substr($function, 3); /* Ex: $function = addTextField() => $class = NamodgField_TextField */

/* This doesn't work! Because $class is not an object yet */
call_user_func_array( array(new $class, '__construct'), $arguments);
}

该代码的最后一行完全破旧了!我只是想弄清楚我想做什么。

我希望能够在初始化一个新对象时传递$arguments,一个接一个地传递,这样每个子类都可以定义它必要的参数。

我想出了一个使用 eval() 的解决方案,但我真的不喜欢它。

有什么想法吗?

最佳答案

$class = new ReflectionClass('a');
$object = $class->newInstanceArgs(array(1, 2, 3));

class a
{
public function __construct($b, $c, $d)
{
var_dump($b, $c, $d);
}
}

关于php - 如何用未知参数初始化对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4708822/

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