PHP は func_get_args 関数と func_num_args 関数を使用して関数のオーバーロード メソッドを実装します。

巴扎黑
リリース: 2023-03-07 20:54:01
オリジナル
1184 人が閲覧しました

PHP を勉強している友人は皆、PHP 自体には関数のオーバーロードがないことを知っています。ましてや、Java や C のような使用法はありません。しかし、さらに詳しく見てみると、次の関数で func_get_args() と func_num_args() を使用できることがわかります。 PHP では、関数のオーバーロードの例を 2 つ示します。

1. 関数内の場合は、対応するデフォルト値が追加されます。対応する関数を完成させることができます。コードは次のとおりです:

コードは次のとおりです:

function overloadFun($param1, $param2 = '1',$param3 = true)  {   // do something   }
ログイン後にコピー

関数 func_get_args() と func_num_args() を使用すると、PHP コードは次のとおりです:

コードは次のとおりです:以下:

function rewrite() {     
$args = func_get_args();     
if(func_num_args() == 1) {     
func1($args[0]);     
} else if(func_num_args() == 2) {     
func2($args[0], $args[1]);     
}     
}     
    
function func1($arg) {     
echo $arg;     
}     
    
function func2($arg1, $arg2) {     
echo $arg1, ' ', $arg2;     
}     
    
rewrite('PHP'); //调用func1     
rewrite('PHP','China'); //调用func2
ログイン後にコピー


2. デフォルト値を使用します。入力に基づいて必要な結果を取得するには、コードは次のとおりです:

コードは次のとおりです:

function test($name="小李",$age="23"){    
echo $name."  ".$age;    
}    
test();    
echo "<br/>";    
test("a");    
echo "<br/>";    
test("a","b");
ログイン後にコピー

3. $name, $arg) 関数を処理する場合、コードは次のとおりです:

コードは次のとおりです:

<?php  
class OverLoad{  
function __call($name, $args)  
{  
  if($name==&#39;overloadFun&#39;)  
  {  
   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()  
{  
  echo 0;  
} 
function overloadFun1($var1)  
{  
  echo $var1;  
} 
function overloadFun2($var1,$var2)  
{  
    
  echo $var1+$var2;  
   }  
}    
$test=new OverLoad();  
$test->overloadFun()."<br />".   
$test->overloadFun(1)."<br />".   
$test->overloadFun(1,2)."<br />";  
?>
ログイン後にコピー

このようなメソッドを使用すると、単純な関数のオーバーロードを実装できますが、注意すべき点が 1 つあります。は、弱く型指定された言語であるため、Java や C++ などの強く型指定された言語のように直接実装することはできません。少なくとも現時点では、将来のバージョンで利用可能になるかどうかはわかりません。

以上がPHP は func_get_args 関数と func_num_args 関数を使用して関数のオーバーロード メソッドを実装します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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