ホームページ  >  記事  >  バックエンド開発  >  PHP で他の関数の引数を維持しながらデフォルトの関数の引数をオーバーライドする方法

PHP で他の関数の引数を維持しながらデフォルトの関数の引数をオーバーライドする方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-30 21:18:03671ブラウズ

How to Override Default Function Arguments in PHP While Maintaining Others?

PHP でのデフォルトの関数引数のオーバーライド

PHP 関数は、関数呼び出し時にフォールバック値を設定するためのデフォルト引数の使用をサポートしています。ただし、その前の引数のデフォルトを維持しながら特定の引数を設定するのは難しい場合があります。

次の関数を考えてみましょう:

<code class="php">function foo($blah, $x = "some value", $y = "some other value") {
}</code>

$x と $y のデフォルトの引数は「some」です。それぞれ「値」と「その他の値」です。しかし、$x のデフォルトを使用しながら、$y のデフォルト値をオーバーライドしたい場合はどうすればよいでしょうか?

Null 値によるオーバーライド

次のように、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。