コンストラクターのパラメーターをいくつでも取るクラスをインスタンス化したいと思います。
コンストラクターで 2 つの引数を取るクラス Man があるとします。
class Man
{
protected $name;
protected $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
}
それから私はパラメータを持っています:
$params = array()
$params['name'] = 'Jack';
$params['age'] = 55;
そして、これは私がクラスをインスタンス化する方法です:
$jack = new Man($params['name'], $params['age']);
今私が達成したいのは、params 配列は任意のサイズ、2、3、4、任意のサイズにすることができ、インスタンス化するクラスは同じ数のパラメーターを持つことです。
だから私を悩ませている唯一のことは、どうすれば変数を自動的に作成できるのでしょうか? 抽出関数がありますが、変数の数を返します:(
私はこれが必要です:
$jack = new Man($name, $age);
ただし、これは自動的に作成される必要があります。スクリプトは params 配列のみを認識し、すべての配列値を変数としてプッシュする必要があります。
最も近いものはこれです:
$jack = new Man(extract($params));
しかし、抽出関数は数値を返すため、配列から変数を作成し、それらをクラス コンストラクターに渡す必要があります。
編集:
クラスを変更することはできません。私の唯一の目標は、そのクラスを構築し、コンストラクターで期待される変数を渡すことです。したがって、私はクラス Im の構築に対して何の力も持っていません。私の目標は、そのクラスをインスタンス化することだけであり、コンストラクターにパラメーターを与えることです。これらのパラメーターは $params 配列に格納されますが、クラスはそれを変数として必要とします。私が達成しようとしていることをより簡単に把握できることを願っています。
ありがとう