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!