Home  >  Article  >  Backend Development  >  Detailed explanation of the usage of php func_get_args and func_num_args functions

Detailed explanation of the usage of php func_get_args and func_num_args functions

伊谢尔伦
伊谢尔伦Original
2017-07-08 11:16:151823browse

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==&#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 />";  
?>

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn