2

関数の名前付けに問題があります。クラスがあり、以下のような2つの関数が必要です。

class myclass {
    public function tempclass () {
        echo "default";   
    }
    public function tempclass ( $text ) {
        echo $text;
    }
}

電話すると

tempclass('testing'); // ( called after creating the object )

function tempclass()が呼び出されていますが、名前が同じでパラメーターが異なる 2 つの関数を使用するにはどうすればよいですか?

4

2 に答える 2

5

従来のオーバーロードは現在、PHP では使用できません。代わりに、渡された引数を確認し、どのように応答するかを決定する必要があります。

チェックアウトしfunc_num_argsfunc_get_args、この時点で。これらの両方を内部的に使用して、特定のメソッドの呼び出しに応答する方法を決定できます。たとえば、あなたの場合、次のことができます。

public function tempclass () {
  switch ( func_num_args() ) {
    case 0:
      /* Do something */
      break;
    case 1:
      /* Do something else */
  }
}

または、引数にデフォルト値を指定し、それらを使用してどのように反応するかを決定することもできます。

public function tempclass ( $text = false ) {
  if ( $text ) {
    /* This method was provided with text */ 
  } else {
    /* This method was not invoked with text */
  }
}
于 2012-04-20T15:22:48.487 に答える
0

PHP ではオーバーロードはできません。

ただし、上記の単純な例では、次のようなものが機能します。

class myclass {
    public function tempclass ($text='Default') {
        echo $text;
    }
}
于 2012-04-20T15:25:26.003 に答える