1. ホーム
  2. php

[解決済み】PHPの関数のオーバーローディング

2022-04-08 20:58:41

質問

C++のバックグラウンドから来る;)

PHP の関数をオーバーロードするにはどうしたらいいですか?

引数がある場合は1つの関数定義、引数がない場合は別の関数定義? PHPでそれは可能ですか?それとも、$_GETやPOSTから渡されたパラメータがあるかどうかをif elseでチェックして関連付けるべきですか?

どのように解決するのですか?

PHPの関数をオーバーロードすることはできません。関数のシグネチャは名前だけで、引数リストは含まれないので、同じ名前の関数を2つ持つことはできません。クラス メソッドオーバーローディング は、PHPと他の多くの言語とでは異なります。PHP は同じ単語を使いますが、異なるパターンを表します。

ただし 可変個体関数 は、可変数の引数を受け取ります。この場合 func_num_args() func_get_arg() を使えば、渡された引数を取得し、普通に使うことができます。

例えば

function myFunc() {
    for ($i = 0; $i < func_num_args(); $i++) {
        printf("Argument %d: %s\n", $i, func_get_arg($i));
    }
}

/*
Argument 0: a
Argument 1: 2
Argument 2: 3.5
*/
myFunc('a', 2, 3.5);