In PHP können wir die Methodenüberladung mit Methoden mit demselben Methodennamen und unterschiedlichen Signaturen nicht direkt implementieren, da PHP ein schwacher Datentyp ist und Signaturen nicht gut unterscheiden kann. Sie können jedoch die __Call () -Methode in PHP -Klassen verwenden, um die Überladung von Methoden zu implementieren. Wenn eine Methode, die in einer Klasse nicht existiert, aufgerufen wird, wird die Methode __call () automatisch aufgerufen, die in Form von __call ($ name, $ argumente) ist, wobei $ Name der Name der Methode ist und $ Argumente ein Array -Typ -Parameter ist.
Das folgende Beispiel besteht darin, die PHP -Methodenüberlastung zu verwenden, um GET -und Set -Methoden dynamisch zu erstellen. (In objektorientierter Programmierung werden die Eigenschaften in einer Klasse mit Get und Set zugewiesen. Wenn jedoch zu viele Eigenschaften in einer Klasse vorhanden sind, z. B. 30, müssen wir, wenn wir keine Methodenüberladung verwenden, 30 Set-Methoden schreiben und 30 Methoden erhalten und sie langsam selbst schreiben ...)
Die Codekopie lautet wie folgt:
<? Php
Klassenperson
{
privat $ name;
privates Alter;
private $ adresse;
Privatschule;
privates $ phonenum;
Öffentliche Funktion __call ($ method, $ args)
{
$ perfix = strtolower (substr ($ methode, 0,3));
$ property = strtolower (substr ($ methode, 3));
if (leer ($ perfix) || leer ($ property))
{
zurückkehren;
}
if ($ perfix == "Get" && isset ($ this-> $ property))
{
Rückgabe $ this-> $ Property;
}
if ($ perfix == "set")
{
$ this-> $ property = $ args [0];
}
}
}
$ p = neue Person ();
$ p-> setName ('lvcy');
$ P-> Setage (23);
$ p-> setAddress (chengdu);
$ p-> setSchool ('uEstc');
$ p-> setPhonenum ('123456');
echo $ p-> getName (). '// n';
echo $ p-> getage (). '// n';
echo $ p-> getAddress (). '// n';
echo $ p-> getSchool (). '// n';
?>
Dieses Problem lässt sich leicht durch __call () -Methode gelöst, anstatt eine Get -Set -Methode für jede Eigenschaft zu schreiben.