Friends who study PHP all know that PHP itself does not have functionsoverloading, let alone how to use it like java and c, but if we If you take a deeper look, you will find that you can use the func_get_args() and func_num_args() functions in PHP to implement function overloading. Here are two examples of function overloading. These two functions implement function overloading.
1. Default parameters. If this is not a required parameter in a function, and the corresponding default value is added, the corresponding function can be completed. The code is as follows:
The code is as follows:
function overloadFun($param1, $param2 = '1',$param3 = true) { // do something }
Using the functions func_get_args() and call_user_func_array(), PHP code is 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 call ($name, $arg) function is processed, 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 as a weakly typed language, PHP itself cannot directly implement overloading like strongly typed languages such as Java and C++. At least not now, we don’t know whether it will be available in future versions.
The above is the detailed content of Detailed explanation of the usage of php func_get_args and func_num_args functions. For more information, please follow other related articles on the PHP Chinese website!