因为刚学PHP,临时做一个东西,没有时间看书。请大家帮忙指点迷津。网上找了一些资料,但是有一个疑问。想写一个Factory,所有的类统一由它创建。约定优于配置,但是构造函数的参数是数组。$class_param是构造函数的参数数组。
这样不行:call_user_func_array(array('A','__construct'),$class_param);
说什么只能调用静态方法。
public static function getInstance($class_name,$class_type,$class_param=null){
$upper = strtoupper($class_type);
        switch ($upper){
                case 'ACTION':
                $class_name = $class_name.'Action';
                $paramstr = '999,888,6666';
                $myclass = new $class_name($paramstr); // 这样也不行啊! 参数当字符串了。--------------------------------------------
另外我这样做是不是很不好? 有没有更科学的方法啊?
if(class_exists( $class_name)){
    $class_action = new $class_name($url_model,$url_action,$url_fun); // 构造函数参数
}$class_name: url 给我传递一个什么File之类的东东,那我不是完蛋啦? 请教高手如何安全地创建类,并且可以动态的将构造函数数组传递进去。 非常感谢。

解决方案 »

  1.   

    call_user_func_array 为什么就是不能调用: __construct 方法。
      

  2.   

    class A{
      function __construct($a, $b) {
        $this->x1 = $a;
        $this->x2 = $b;
      }
    }
    $ref = new ReflectionClass('A');
    $p = $ref->newInstanceArgs(array(1, 2));
    print_r($p);A Object
    (
        [x1] => 1
        [x2] => 2
    )
      

  3.   

    现在在看:Reflection  PHP Manual 。 copy that !
    看见Reflection.class 就感觉和JAVA差不多了。