0

私は次のような工場パターンを持っています:

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);
   ***
   ***
}

extractを使用しようとしていますが、変数が返されません。 var_で始まる連想配列のキーを使用してアクセスする必要があります。配列のすべての値をコンマ区切りの変数として何らかの方法で返し、それを関数に渡すことは可能ですか?

私のビュークラス:

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

2 に答える 2

2

これがあなたが求めているものかどうかはよくわかりませんが、 ReflectionClass::newInstanceArgsを使用してクラスのインスタンスを作成し、配列から引数を渡すことができます:

public static function Create($params) {
    $class = new ReflectionClass('View');
    return $class->newInstanceArgs($params);
}
于 2013-07-12T19:30:58.797 に答える
1

次のように、そのうちの 3 つをビューに渡すだけです。

// 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]);
于 2013-07-12T19:31:12.767 に答える