1

次のような変数を含むデフォルトの関数引数を設定する方法はありますか?

function example($test = 'abc', $image = $scripturl . 'abc.png')
{
        // ...
}

これを実行したい理由は、cssファイルまたは画像を含める必要があるときに簡単に取得できるように、パスが設定されたグローバル変数設定を持つソースがあるためです。

上記のコードは予期しないT_VARIABLEを与えます...

4

4 に答える 4

4

デフォルト値は定数である必要があります。それらは、ランタイムではなく、コンパイル時にすでに利用可能な値を持っている必要があります。

于 2012-04-04T22:09:16.783 に答える
3

それは可能ではありません; デフォルトの引数は定数でなければなりません。

ただし、次のように簡単にエミュレートできます。

function example($test = 'abc', $image = null) {
    if($image === null) {
        global $scripturl;
        $image = $scripturl . 'abc.png';
    }
}
于 2012-04-04T22:10:14.747 に答える
1

いいえ。関数の引数のデフォルト値は、式の結果ではなく、定数値である必要があります。http: //php.net/manual/en/functions.arguments.php#functions.arguments.default

引数が解析された時点では、$ scripturlはとにかく存在せず、使用される前にグローバルにすることができなかったため、常にNULLとして出力されます。

于 2012-04-04T22:10:14.623 に答える
1

さて、すでに述べたエラーのように、関数シグニチャのデフォルト値(の一部)として変数を使用することはできません。

ただし、できることは、既知の不正な値(nullたとえば)を渡してから、関数内をチェックし、必要に応じて割り当てることです。

function example($test = 'abc', $image = null)
{
   global $scripturl;
   if($image === null) $image = $scripturl . 'abc.png';
   ...
}
于 2012-04-04T22:10:57.197 に答える