ホームページ  >  記事  >  バックエンド開発  >  PHP は func_get_args 関数と func_num_args 関数を使用して関数のオーバーロードの例を実装します。 funcnumargs_PHP チュートリアル

PHP は func_get_args 関数と func_num_args 関数を使用して関数のオーバーロードの例を実装します。 funcnumargs_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:14:05924ブラウズ

PHP は func_get_args 関数と func_num_args 関数を使用して、関数のオーバーロード例、 funcnumargs を実装します

この記事の例では、PHP が func_get_args 関数と func_num_args 関数を使用して関数のオーバーロードを実装する方法を説明します。皆さんの参考に共有してください。具体的な手法の分析は次のとおりです:

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

1. デフォルトのパラメーター。関数内の場合、これは必須パラメーターではなく、対応するデフォルト値を追加すると、対応する関数が完成します。


コードをコピーします コードは次のとおりです:function overloadFun($param1, $param2 = '1',$param3 = true)
{
// 何かをする
}

関数 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]); }
}

関数 func1($arg) {
エコー $arg
}

関数 func2($arg1, $arg2) {
echo $arg1, ' ', $arg2;
}

rewrite('PHP'); // func1 を呼び出します
rewrite('PHP','China') // func2 を呼び出します

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


コードをコピーします

コードは次のとおりです:
function test($name="Xiao Li",$age="23"){ エコー $name." ".$age } テスト(); エコー "
"; テスト("a"); エコー "
"; テスト("a","b");
3. __call($name, $arg) 関数を使用して処理します。 コードは次のとおりです。


コードをコピーします

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

クラスオーバーロード{
関数 __call($name, $args)
{
if($name=='overloadFun')
{ スイッチ(カウント($args)) { ケース 0: $this->overloadFun0();break; ケース 1: $this->overloadFun1($args[0]); ケース 2: $this->overloadFun2($args[0], $args[1]); デフォルト: //何かをする 休憩
}
}
}

関数 overloadFun0()
{
エコー0; }

関数オーバーロードFun1($var1)
{
$var1 をエコーし​​ます。 }

関数オーバーロードFun2($var1,$var2)
{

$var1+$var2 をエコーし​​ます。 }
}
$test=新しいオーバーロード(); $test->overloadFun()."
"。 $test->overloadFun(1)."
"。 $test->overloadFun(1,2)."
"; ?>

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

この記事が皆さんの PHP プログラミング設計に役立つことを願っています。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/910603.html技術記事 PHP は func_get_args 関数と func_num_args 関数を使用して関数のオーバーロードの例、funcnumargs を実装します。 この記事では、PHP が func_get_args 関数と func_num_args 関数を使用して関数のオーバーロードを実装する方法について説明します。シェア...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。