>백엔드 개발 >PHP 튜토리얼 >PHP는 func_get_args 및 func_num_args 함수를 사용하여 함수 오버로딩 방법을 구현합니다.

PHP는 func_get_args 및 func_num_args 함수를 사용하여 함수 오버로딩 방법을 구현합니다.

巴扎黑
巴扎黑원래의
2017-05-23 16:10:581243검색

PHP를 공부하는 친구들은 PHP 자체에는 함수 오버로딩이 없다는 사실을 모두 알고 있습니다. Java나 C처럼 사용법은 말할 것도 없고요. 하지만 좀 더 자세히 살펴보면 func_get_args()와 func_num_args를 사용할 수 있다는 것을 알게 될 것입니다. PHP. () 함수는 함수 오버로딩의 두 가지 예입니다.

1. 기본 매개변수는 함수에 필요하지 않습니다. 해당 기본값을 추가하면 해당 기능을 완성할 수 있습니다.

코드는 다음과 같습니다.

function overloadFun($param1, $param2 = '1',$param3 = true)  {   // do something   }

func_get_args() 및 func_num_args( ), PHP 코드는 다음과 같습니다.

코드는 다음과 같습니다.

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. 입력에 따라 원하는 결과를 얻으려면 기본값을 사용합니다. 코드는 다음과 같습니다.

코드는 다음과 같습니다.

function test($name="小李",$age="23"){    
echo $name."  ".$age;    
}    
test();    
echo "<br/>";    
test("a");    
echo "<br/>";    
test("a","b");

3. __call($name, $arg) 함수를 사용하여 처리합니다.

코드는 다음과 같습니다:

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

이러한 방법을 사용하면 간단한 함수 오버로딩을 구현할 수 있지만 한 가지 주목해야 할 점은 PHP는 약한 유형의 언어로서, java, C++ 등 강력한 형식의 언어처럼 직접 구현할 수는 없습니다. 적어도 현재 버전에서는 다시 로드할 수 있을지 알 수 없습니다.

위 내용은 PHP는 func_get_args 및 func_num_args 함수를 사용하여 함수 오버로딩 방법을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.