【发布时间】:2010-09-07 11:32:10
【问题描述】:
我在我的一些 mvc 代码中使用 __call 魔法来生成一个可自动加载的表单框架,但我遇到了一个问题,我希望这里有人可以解决这个问题。
__call 魔法有两个参数:$methodName 和 $arguments。参数作为您调用的 args 数组返回。通常,此函数会在您可以这样做的方法上调用,因此将这些参数输入到函数中:
call_user_func_array($methodName, $arguments);
这将使用参数传播方法签名。我正在尝试做一些更复杂的事情。我试图以相同的方式传播一个类构造函数,通过能够将一个内爆的逗号分隔的参数数组发送到类构造函数中,或者直接发送参数,但这两者都不会产生所需的结果。当我将一个内爆数组向下发送到构造函数时,PHP 认为它是一个字符串,而当我发送数组时它认为它是一个数组。
这是我使用 atm 的代码:
public function __call($method, $args){
return $this->init_element(new $method($args['name'], $args['value'], $args['opts']));
}
如果我有 4 个参数要传递怎么办?有没有办法让它像使用 call_user_func_array() 的函数一样动态填充构造函数?
我可以使用 attributes() 函数来执行此操作,但我真的希望能够像使用函数一样执行此操作。
提前致谢,
【问题讨论】:
-
Pass arguments from array in php to constructor 的可能重复项 - 使用反射。
-
是的,这可能有效,我会试试看是否有效,谢谢:)
标签: php class constructor call