Methodenüberladung in PHP
- Methodenüberladung in PHP
-
Verwenden Sie die magische Methode
__call()
, um das Überladen von Methoden in PHP zu implementieren -
Verwendung der magischen Methode
__callStatic()
zur Implementierung von Methodenüberladung in PHP
Dieser Artikel stellt das Konzept des Methodenüberladens in PHP zusammen mit Beispielen vor.
Methodenüberladung in PHP
Das Überladen von Methoden ist ein Konzept in OOP, bei dem mehrere Methoden mit demselben Namen innerhalb einer Klasse existieren, die eine unterschiedliche Anzahl von Parametern oder Datentypen akzeptiert. Beispielsweise kann eine Methode add()
überladen werden, indem sie zweimal definiert wird; Der erste nimmt zwei Parameter, der zweite drei Parameter.
Wir können die Funktion sogar überladen, indem wir Integer-Argumente in einer Methode bereitstellen, während wir Gleitkomma-Argumente in der anderen bereitstellen. Diese Art des Überladens ist in Sprachen wie Java und C++ beliebt.
Allerdings ist das Konzept des Methodenüberladens in PHP ganz anders. Das Überladen von Methoden ist der Prozess des dynamischen Erstellens einer Methode mit Hilfe von magischen Methoden.
Wir können Methoden erstellen, die im Bereich einer Klasse nicht existieren. Es funktioniert sowohl für Klassenmethoden als auch für statische Methoden.
Die magischen Methoden __call()
und __callStatic()
werden verwendet, um die dynamischen Methoden zu überladen. Aus dem Namen geht hervor, dass die Methode __call()
für Klassenmethoden und die Methode callStatic()
für statische Methoden verwendet wird.
Die Syntax dieser Methoden ist unten dargestellt.
__call($name, $arguments){
//function body
}
Hier ist $name
der Name der dynamischen Methode und $arguments
ein Array, das die Argumente der dynamischen Methode enthält. Innerhalb der Methode können wir über die Indizes im Array $arguments
auf die Argumente zugreifen.
Verwenden Sie die magische Methode __call()
, um das Überladen von Methoden in PHP zu implementieren
Wir können die Methode __call()
verwenden, um eine Methode in PHP dynamisch zu erstellen. Die Methode wird ausgeführt, wenn wir eine Methode aufrufen, die noch nicht im Objektkontext erstellt wurde.
Der Vorgang wird in PHP als Methodenüberladung bezeichnet.
Erstellen Sie beispielsweise eine Klasse Universität
und darin die Methode __call()
. Benennen Sie in dieser Methode die Parameter $name
und $arguments
.
Geben Sie innerhalb der Methode die Variable $name
und die Elemente des Arrays $arguments
aus. Erstellen Sie außerhalb der Klasse ein Objekt $student
der Klasse University
.
Rufen Sie als nächstes die Methode student_info()
mit dem Objekt $student
auf. Übergeben Sie in der Methode die Argumente 001
und Biswash
.
Beispielcode:
<?php
class University{
public function __call($name, $arguments){
echo "inside the method: ".$name."<br>";
echo "id:".$arguments[0]."<br>";
echo "name:".$arguments[1]."<br>";
}
}
$student = new University;
$student->student_info(001,'Biswash');
?>
Lassen Sie uns den Fluss des obigen Beispiels verstehen.
Wenn wir die Methode student_info()
mit den Parametern aufrufen, findet das Programm die Methode nicht in der Klasse Universität
. Aber die Methode __call()
existiert in der Klasse, also wird diese Funktion ausgeführt.
Der Parameter $name
in der Methode enthält die Methode student_info()
, und der Parameter $arguments
enthält die Argumente 001
und Biswash
als Array ( [0] => 1 [1] => Biswash )
. Die Parameter werden innerhalb der Methode __call()
ausgegeben.
Ausgabe:
inside the method: student_info
id:1
name:Biswash
Auf diese Weise können wir die magische Methode __call()
verwenden, um eine Methodenüberladung im Objektkontext in PHP zu erreichen.
Verwendung der magischen Methode __callStatic()
zur Implementierung von Methodenüberladung in PHP
Wir können die Funktion zum Überladen von Methoden auch im statischen Kontext in PHP verwenden. Wir müssen die magische Methode __callStatic()
verwenden.
Die Funktionsdefinition der Methode ähnelt der der Methode __call
. Da wir es jedoch im statischen Kontext verwenden, sollte die Methode statisch sein.
Da es sich um einen statischen Kontext handelt, müssen wir keine Instanz der Klasse erstellen. Wir können die dynamisch zu erstellende Methode direkt mit dem Operator ::
aus der Klasse aufrufen.
Erstellen Sie zum Beispiel eine Methode __callStatic()
innerhalb der Klasse Universität
, wie wir es für die Methode __call()
getan haben. Vergessen Sie nicht, bei der Definition der Methode das Schlüsselwort static
zu schreiben.
Füllen Sie die Parameter und den Hauptteil der Methode wie in der obigen Methode aus. Rufen Sie außerhalb der Klasse eine Methode professor_info
mit dem Operator ::
von der Klasse als University::professor_info()
auf.
Geben Sie die Argumente Ihrer Wahl in der Methode an.
Beispielcode:
<?php
class University{
public static function __callStatic($name, $arguments){
echo "inside the method: ".$name."<br>";
echo "id:".$arguments[0]."<br>";
echo "name:".$arguments[1]."<br>";
}
}
University::professor_info(0010,'Professor Jack ');
?>
Ausgabe:
inside the method: professor_info
id:8
name:Professor Jack
Auf diese Weise können wir eine statische Methode mit der magischen Methode __callStatic()
von PHP überladen.
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn