弱く型付けされた言語の場合、PHP 関数オーバーロードは一般的な OOP とは異なります。
関数のオーバーロードは、
1、関数パラメータの数が異なるという2つの条件を満たす必要があるためです。
2.パラメータの種類が異なります。
PHP はこれら 2 つの点を満たすことができません。関数にパラメータを追加することは、追加の一時変数を渡すことと同じです。弱い型は本質的に区別されていないため、これらを介して実装することはできません。
ただし、次の方法で簡単な擬似オーバーロードを実現できます。 1. デフォルトパラメータ 上記からわかるように、関数内の必須ではないパラメータに対応するデフォルト値を追加すると、対応する関数が完成します。function overloadFun($param1, $param2 = '1',$param3 = true) { // do something }2. 関数 func_get_args() と call_user_func_array() を使用します。詳細については、
PHP マニュアル を参照してください。
一元管理を容易にするために、通常の関数を呼び出して使用します。function overloadFun() { // overloadFun可以随便定义,但为了命名规范,建议宝贝为与此函数名一样, // 后面的尾随数值为参数个数,以方便管理 $name="overloadFun".func_num_args(); return call_user_func_array(array($this,$name), func_get_args()); } function overloadFun0() { // do something } function overloadFun1() { // do something } function overloadFun2() { // do something }3. call($name, $arg) 関数を使用して処理します。
function call($name, $args) { if($name=='overloadFun') { switch(count($args)) { case 0: $this->overloadFun0();break; case 1: $this->overloadFun1($args[0]); break; case 2: $this->overloadFun2($args[0], $args[1]); break; default: //do something break; } } } function overloadFun0() { // do something } function overloadFun1() { // do something } function overloadFun2() { // do something }まとめると、これらのメソッドはすべて擬似オーバーロードを実現できます。基本的に、2 番目と 3 番目のメソッドは相互に内容を処理および判断できます。
以上がPHP関数のオーバーロードとは何ですか?関数オーバーロードの使用方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。