次のような変数を含むデフォルトの関数引数を設定する方法はありますか?
function example($test = 'abc', $image = $scripturl . 'abc.png')
{
// ...
}
これを実行したい理由は、cssファイルまたは画像を含める必要があるときに簡単に取得できるように、パスが設定されたグローバル変数設定を持つソースがあるためです。
上記のコードは予期しないT_VARIABLEを与えます...
次のような変数を含むデフォルトの関数引数を設定する方法はありますか?
function example($test = 'abc', $image = $scripturl . 'abc.png')
{
// ...
}
これを実行したい理由は、cssファイルまたは画像を含める必要があるときに簡単に取得できるように、パスが設定されたグローバル変数設定を持つソースがあるためです。
上記のコードは予期しないT_VARIABLEを与えます...
デフォルト値は定数である必要があります。それらは、ランタイムではなく、コンパイル時にすでに利用可能な値を持っている必要があります。
それは可能ではありません; デフォルトの引数は定数でなければなりません。
ただし、次のように簡単にエミュレートできます。
function example($test = 'abc', $image = null) {
if($image === null) {
global $scripturl;
$image = $scripturl . 'abc.png';
}
}
いいえ。関数の引数のデフォルト値は、式の結果ではなく、定数値である必要があります。http: //php.net/manual/en/functions.arguments.php#functions.arguments.default
引数が解析された時点では、$ scripturlはとにかく存在せず、使用される前にグローバルにすることができなかったため、常にNULLとして出力されます。
さて、すでに述べたエラーのように、関数シグニチャのデフォルト値(の一部)として変数を使用することはできません。
ただし、できることは、既知の不正な値(null
たとえば)を渡してから、関数内をチェックし、必要に応じて割り当てることです。
function example($test = 'abc', $image = null)
{
global $scripturl;
if($image === null) $image = $scripturl . 'abc.png';
...
}