Home > Article > Backend Development > PHP uses func_get_args and func_num_args functions to implement function overloading method
Friends who study PHP all know that PHP itself does not have function overloading, let alone how to use it like Java and C. But if we take a deeper look, we will find that we can use func_get_args() and func_num_args in PHP. The () function implements function overloading. Here are two examples of function overloading. These two functions implement function overloading.
1. Default parameters, if in a function, this is not necessary Parameters, and adding corresponding default values can complete the corresponding functions. The code is as follows:
The code is as follows:
function overloadFun($param1, $param2 = '1',$param3 = true) { // do something }
Use the functions func_get_args() and func_num_args(), PHP code As follows:
The code is as follows:
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. Use the default value to get the results you want based on the input. The code is as follows:
The code is as follows:
function test($name="小李",$age="23"){ echo $name." ".$age; } test(); echo "<br/>"; test("a"); echo "<br/>"; test("a","b");
3. Use the __call($name, $arg) function for processing. The code is as follows:
The code is as follows:
<?php class OverLoad{ 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() { 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 />"; ?>
With such methods, we can use them to implement simple function overloading, but one thing to note is that php, as a weakly typed language, cannot be directly implemented like strongly typed languages such as java and c++. Reloading, at least not now, we don’t know if it will be available in future versions.
The above is the detailed content of PHP uses func_get_args and func_num_args functions to implement function overloading method. For more information, please follow other related articles on the PHP Chinese website!