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

Linda Hamilton
リリース: 2024-10-30 21:18:03
オリジナル
614 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!