>백엔드 개발 >PHP 튜토리얼 >PHP 함수 오버로딩 분석 및 예제

PHP 함수 오버로딩 분석 및 예제

墨辰丷
墨辰丷원래의
2018-05-16 13:40:181606검색

이 글은 주로 PHP 함수 오버로딩 분석과 예제를 소개합니다. 관심 있는 친구들이 참고하면 좋겠습니다.

약한 유형의 언어의 경우 PHP 함수 오버로드는 일반적인 OOP와 다릅니다.

함수 오버로딩은 두 가지 조건을 충족해야 하기 때문입니다.

1. 함수 매개변수의 개수가 다릅니다.

2. 매개변수 유형이 다릅니다.

PHP는 이 두 가지 점을 충족할 수 없습니다. 함수에 더 많은 매개변수를 추가할 수 있습니다. 이는 추가 임시 변수를 전달하는 것과 같습니다. 약한 유형은 본질적으로 구별되지 않으므로 이를 통해 구현할 수 없습니다.

그러나 다음과 같은 방법을 통해 간단한 의사 오버로딩을 구현할 수 있습니다.

1. 기본 매개변수

위에서 알 수 있듯이 함수의 필수가 아닌 매개변수에 해당 기본값을 추가하면 해당 함수가 완성됩니다.

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

2. func_get_args() 및 call_user_func_array() 함수를 사용하세요. 자세한 도움말은 PHP 매뉴얼을 참조하세요.

통합 관리를 용이하게 하기 위해 일반 통화 기능을 사용하세요.

function overloadFun()  
{  
    // overloadFun可以随便定义,但为了命名规范,建议宝贝为与此函数名一样,  
    // 后面的尾随数值为参数个数,以方便管理  
$name="overloadFun".func_num_args();   
  return call_user_func_array(array($this,$name), func_get_args());       
}  
  
function overloadFun0()  
{  
    // do something  
}  
  
function overloadFun1()  
{  
    // do something  
}  
  
function overloadFun2()  
{  
    // do something  
}

3. 처리를 위해 __call($name, $arg) 함수를 사용하세요.

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()  
{  
    // do something  
}  
  
function overloadFun1()  
{  
    // do something  
}  
  
function overloadFun2()  
{  
    // do something  
}

요약하자면, 이 방법들은 모두 의사 오버로딩을 달성할 수 있습니다. 기본적으로 두 번째와 세 번째 방법은 서로의 내용을 처리하고 판단할 수 있습니다.

이 기사에서는 정수 유형 결정, 범주 등 처리해야 할 세부 사항이 많이 있을 수 있습니다.

그러나 위 내용에 따르면 PHP는 결코 과부하가 발생하지 않을 수 있으며, 이 경우 언어 자체의 의미가 손실됩니다.

관련 추천:

PHP 함수 오버로딩이란 무엇인가요? 함수 오버로딩 사용법에 대한 자세한 설명

php_PHP 함수 오버로딩의 대체 방법 튜토리얼

php에서 함수 오버로딩의 대체 방법--의사 오버로딩에 대한 자세한 설명,overloading_PHP 튜토리얼에 대한 자세한 설명

위 내용은 PHP 함수 오버로딩 분석 및 예제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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