PHP でのデフォルトの関数引数のオーバーライド
PHP 関数は、関数呼び出し時にフォールバック値を設定するためのデフォルト引数の使用をサポートしています。ただし、その前の引数のデフォルトを維持しながら特定の引数を設定するのは難しい場合があります。
次の関数を考えてみましょう:
<code class="php">function foo($blah, $x = "some value", $y = "some other value") { }</code>
$x と $y のデフォルトの引数は「some」です。それぞれ「値」と「その他の値」です。しかし、$x のデフォルトを使用しながら、$y のデフォルト値をオーバーライドしたい場合はどうすればよいでしょうか?
次のように、null を使用してデフォルトをオーバーライドしようとします。
<code class="php">foo("blah", null, "test"); // Does not work</code>
または
<code class="php">foo("blah", "", "test"); // Does not work</code>
では、望ましい結果が得られません。
別のアプローチでは、デフォルトの変数を名前付き変数に割り当てます。次のような変数:
<code class="php">foo("blah", $x, $y = "test");</code>
もデフォルトをオーバーライドできません。
この問題を解決するには、関数宣言を次のように変更します。
<code class="php">function foo($blah, $x = null, $y = null) { if (null === $x) { $x = "some value"; } if (null === $y) { $y = "some other value"; } }</code>
これにより、
<code class="php">foo('blah', null, 'non-default y value');</code>
のような呼び出しを行うことができ、$x のデフォルト値も維持できます。
注: デフォルト引数のみ関数の最後の引数として機能します。関数定義内でデフォルト値を宣言する場合、パラメーターを省略して後続のパラメーターをオーバーライドすることはできません。
以上がPHP で他の関数の引数を維持しながらデフォルトの関数の引数をオーバーライドする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。