Methodenüberladung in PHP

Subodh Poudel 30 Januar 2023
  1. Methodenüberladung in PHP
  2. Verwenden Sie die magische Methode __call(), um das Überladen von Methoden in PHP zu implementieren
  3. Verwendung der magischen Methode __callStatic() zur Implementierung von Methodenüberladung in PHP
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 Poudel avatar Subodh Poudel avatar

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