Home  >  Article  >  Backend Development  >  PHP uses func_get_args and func_num_args functions to implement function overloading method

PHP uses func_get_args and func_num_args functions to implement function overloading method

巴扎黑
巴扎黑Original
2017-05-23 16:10:581215browse

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==&#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 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!

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