ホームページ >バックエンド開発 >PHPチュートリアル >phpのfunc_get_args関数とfunc_num_args関数の使い方の詳しい説明

phpのfunc_get_args関数とfunc_num_args関数の使い方の詳しい説明

伊谢尔伦
伊谢尔伦オリジナル
2017-07-08 11:16:151838ブラウズ

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

1 のデフォルト パラメーターは、対応するデフォルトを追加することによって実装されます。値を指定すると、対応する関数を完了できます。 コードは次のとおりです。

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

function overloadFun($param1, $param2 = '1',$param3 = true)  
{  
 // do something   
}

関数 func_get_args() と call_user_func_array() を使用すると、 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.処理には call($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 つありますphp は弱い型指定言語であるため、Java や C++ のような型で直接オーバーロードを実装することはできません。少なくとも、将来のバージョンで利用できるかどうかはわかりません。

以上がphpのfunc_get_args関数とfunc_num_args関数の使い方の詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。