PHP 関数の一部のみをオーバーライドしたい場合に、PHP 関数でデフォルトの引数を使用する方法

Patricia Arquette
リリース: 2024-10-29 09:22:30
オリジナル
567 人が閲覧しました

How to Use Default Arguments in PHP Functions When You Only Want to Override Some of Them?

PHP 関数でのデフォルト引数の使用

PHP で関数パラメータにデフォルト値を割り当てる場合は、その制限を理解することが重要です。次のようなパラメータを持つ関数を考えてみましょう:

<code class="php">function foo($blah, $x = "some value", $y = "some other value")</code>
ログイン後にコピー

$x にはデフォルトの引数を使用したいが、$y には別の値を指定したい場合はどうすればよいですか?

$x に null を渡すと、 PHP はこれを値の意図的な省略として解釈するため、機能しません。これに対処するには、次のアプローチを検討してください。

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

    if (null === $y) {
        $y = "some other value";
    }

    // Code here!
}</code>
ログイン後にコピー

この変更により、foo('blah', null, 'test') を呼び出して $x のデフォルトを使用し、$x のカスタム値を指定できます。 $y.

PHP のデフォルトのパラメーター メカニズムが関数の最後の引数に適用されることに注意することが重要です。必要な引数が最後の引数ではない場合、デフォルトの引数を省略することはできません。

さまざまなパラメータの数と型を処理したい場合は、より柔軟なアプローチを検討できます。

<code class="php">public function __construct($params = null)
{
    if ($params instanceof SOMETHING) {
        // Single parameter of type SOMETHING
    } elseif (is_string($params)) {
        // Single string argument
    } elseif (is_array($params)) {
        // Array of properties
    } elseif (func_num_args() == 3) {
        // 3 parameters passed
    } elseif (func_num_args() == 5) {
        // 5 parameters passed
    } else {
        throw new \InvalidArgumentException("Could not figure out parameters!");
    }
}</code>
ログイン後にコピー

この方法により、多様な入力シナリオをより柔軟に処理できます。

以上がPHP 関数の一部のみをオーバーライドしたい場合に、PHP 関数でデフォルトの引数を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート