私は2つの解決策を見ます:
- null引数を使用して関数を作成します。null値が指定された場合は、関数内でnull値を確認し、デフォルトに置き換えます。これは、プロトタイプで指定されなくなったという点で回りくどいものですが、最小限の労力でデフォルト値のソリューションを提供します。
- プロトタイプをキーと値のペアを持つ配列引数に変換します。これは最初の解決策と似ていますが
array_merge
、「デフォルト値」配列と新しく渡された引数値を組み合わせるなどの方法を使用できます。
例1:
function abc($foo = null, $bar = null)
{
// defaulting parameters
if (is_null($foo)) $foo = 'Hello, world!'; // foo default value
if (is_null($bar)) $bar = 123.45; // bar default value
// on-ward with the function
}
// override bar, but not foo:
abc(null, 987.65);
例2:
function def($args)
{
// defaulting parameters
$args = array_merge(
array(
'foo' => 'Hello, world!', // Default foo value
'bar' => 123.45 // default bar value
),
$args // override with supplied values
);
// on-ward with the function
}
// override bar, but not foo
def(array('bar'=>987.65));