从数组创建变量并使用它们来调用方法而不知道变量名称PHP

时间:2013-07-12 19:20:04

标签: php factory factory-pattern

我有这样的工厂模式:

public function ViewFactory implements Factory {
    public function __construct() {

    }

    public static function Create($params) {
        //does not return variables, only extracts them
        $p = extract($params, EXTR_PREFIX_ALL, "var_");

        //return object of view and pass in all variables extracted from array
        return new View($p);
    }

    ***
    ***
}

interface Factory {
   public function Create($params);
   ***
   ***
}

我尝试使用提取,但它不返回变量我只需要使用前缀为 var _ 的关联数组中的键来访问它们。有可能以某种方式返回数组的所有值作为变量逗号分隔并将其传递给函数吗?

我的观点类:

class View {
   public function __construct($path, $parameters, $site_title) {
         ***
   };
} 

2 个答案:

答案 0 :(得分:2)

我不太确定这是否是您要求的,但您可以使用ReflectionClass::newInstanceArgs创建类的实例并从数组中传递参数:

public static function Create($params) {
    $class = new ReflectionClass('View');
    return $class->newInstanceArgs($params);
}

答案 1 :(得分:1)

您可以将其中的三个传递给视图,如下所示:

// This will reset the keys in the array, so the keys will now be [0] [1] and [2]
$p = array_values($p);

// Pass the values one by one
return new View($p[0], $p[1], $p[2]);