Heim >Backend-Entwicklung >PHP-Tutorial >Was ist eine PHP-Funktionsüberladung? Detaillierte Erläuterung der Verwendung von Funktionsüberladung

Was ist eine PHP-Funktionsüberladung? Detaillierte Erläuterung der Verwendung von Funktionsüberladung

伊谢尔伦
伊谢尔伦Original
2017-07-08 09:25:391656Durchsuche

Bei schwach typisierten Sprachen sind PHP-Funktionen Überladung nicht wie allgemeines OOP.

Da die Funktionsüberladung zwei Bedingungen erfüllen muss:

1. Die Anzahl der Funktionsparameter ist unterschiedlich.

2. Die Arten von Parametern sind unterschiedlich.

PHP kann diese beiden Punkte nicht erfüllen. Sie können der Funktion weitere Parameter hinzufügen, was der Übergabe einer zusätzlichen temporären

-Variable entspricht. Schwache Typen sind nicht von Natur aus differenziert und können daher nicht durch diese implementiert werden.

Mit der folgenden Methode können Sie jedoch eine einfache Pseudoüberladung erreichen.

1. Standardparameter

Wie Sie oben sehen können, kann die entsprechende Funktion abgeschlossen werden, wenn ich den nicht erforderlichen Parametern in einer Funktion entsprechende Standardwerte hinzufüge.

  function overloadFun($param1, $param2 = '1',$param3 = true)
  {
  // do something 
  }
2. Verwenden Sie die Funktionen func_get_args() und call_user_func_array(). Weitere Informationen finden Sie im

PHP-Handbuch.

Verwenden Sie zum Aufrufen eine reguläre Funktion, um eine einheitliche Verwaltung zu ermöglichen.

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. Verwenden Sie zur Verarbeitung die Funktion 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  
}
Zusammenfassend lässt sich sagen, dass diese Methoden alle eine Pseudoüberladung erreichen können. Grundsätzlich können die zweite und die dritte Methode den Inhalt des anderen verarbeiten und beurteilen.


Der Artikel gibt nur die Methode an. Möglicherweise müssen viele Details behandelt werden, z. B. die Beurteilung von ganzen Zahlen, Kategorien usw.

Dem obigen Inhalt zufolge wird PHP jedoch möglicherweise nie wirklich überlastet, wodurch die Bedeutung der Sprache selbst verloren geht.

Das obige ist der detaillierte Inhalt vonWas ist eine PHP-Funktionsüberladung? Detaillierte Erläuterung der Verwendung von Funktionsüberladung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn