gpt4 book ai didi

php - __call 魔法在 PHP 中创建新类

转载 作者:行者123 更新时间:2023-12-02 03:38:37 27 4
gpt4 key购买 nike

我在一些 mvc 代码中使用 __call 魔法来生成一个可自动加载的表单框架,但我遇到了一个问题,我希望这里有人可以解决这个问题。

__call 魔法需要两个参数:$methodName 和 $arguments。参数作为您调用的参数数组返回。通常,这个函数是在您可以执行的方法上调用的,因此将这些参数输入到函数中:

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() 的函数一样?

我可以使用 attribute() 函数来执行此操作,但我真的希望能够像使用函数一样执行此操作。

提前致谢,

最佳答案

使用 PHP 的反射类:( http://php.net/manual/en/class.reflectionclass.php )

$obj = new ReflectionClass( $classname );

然后

$ins = $obj->newInstanceArgs( $arguments );

$ins = $obj->newInstance( );

关于php - __call 魔法在 PHP 中创建新类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3658260/

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