代码之家  ›  专栏  ›  技术社区  ›  Sammaye

__调用magic在PHP中创建新类

  •  3
  • Sammaye  · 技术社区  · 14 年前

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

    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\u user\u func\u array()函数一样动态填充构造函数?

    提前谢谢,

    2 回复  |  直到 14 年前
        1
  •  0
  •   Kolky    14 年前

    http://php.net/manual/en/class.reflectionclass.php )

    $obj = new ReflectionClass( $classname );

    然后

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

    $ins = $obj->newInstance( );

        2
  •  -1
  •   jwueller    14 年前

    我在网上看到了以下内容:

     call_user_func_array(array($obj, '__construct'), $args);