0

私はこのコードを持っています:

class foo
{
    public function __construct
    (
        $bar[var1]  = 0,
        $bar[var2]  = 0,
        $bar[var3]  = 0
    )
    {
        /* do something */
    }
}

そして、私はこのエラーを受け取ります:

解析エラー: 構文エラー、予期しない '['、5 行目の$thisに ')' が必要です

何が悪いのかわかりません。

編集:

次のようにクラスを初期化したい: $instance = new foo($bar) ($bar は配列です)

クラスは多くの引数を期待するため、コンストラクターから簡単に配列を返すことができます。これが良い考えでない場合はお知らせください。

4

5 に答える 5

8

関数の引数定義で配列を作成しようとしているのはなぜですか? それは意味がなく、これを行うことはできません。

引数になりたい$barが、いくつかの値 (つまり、デフォルト値) が存在することを確認する場合は、次のようにします。

public function __construct($bar)
{
    if(!isset($bar['var1'])) $bar['var1'] = 0;
    if(!isset($bar['var2'])) $bar['var2'] = 0;
    if(!isset($bar['var3'])) $bar['var3'] = 0;

    /* do something */
}

またはよりコンパクトな方法で:

public function __construct($bar)
{
    $bar = array_merge(array('var1' => 0, 'var2' => 0, 'var3' => 0), $bar);
    /* do something */
}
于 2012-04-26T08:46:45.337 に答える
1
class foo
{
    public function __construct($bar = array())
    {
        $bar += array(
            "var1" => 0,
            "var2" => 0,
            "var3" => 0
        );

        /* do something */
    }
}
于 2012-04-26T08:47:07.753 に答える
1
class foo
{
    public function __construct()
    {
        $bar = func_get_args();
    }
}
于 2012-04-26T08:47:56.070 に答える
1

配列全体を渡す必要があることはできません。また、キーを引用する必要があります

public function __construct($bar)
    {
        $bar['var1']  = 0;
        $bar['var2']  = 0;
        $bar['var3']  = 0;

        /* do something */
    }
于 2012-04-26T08:48:20.580 に答える
1
class foo
{
    public function __construct($bar = array('var'=>0, 'var2'=>0, 'var3'=>0))
    {
        var_dump($bar);
    }
}
于 2012-04-26T08:49:11.983 に答える