Heim >Backend-Entwicklung >PHP-Tutorial >PHP-Überladung richtig verstehen

PHP-Überladung richtig verstehen

藏色散人
藏色散人nach vorne
2019-10-23 13:24:332108Durchsuche

PHP-Überladung unterscheidet sich von Java-Überladung und kann nicht verwechselt werden. Java erlaubt mehrere Funktionen mit demselben Namen in einer Klasse, und jede Funktion hat unterschiedliche Parameter, während PHP nur eine Funktion mit demselben Namen zulässt. Java kann beispielsweise mehrere Konstruktoren haben, PHP jedoch nur einen Konstruktor.

Überladung von PHP bezieht sich auf die dynamische Erstellung von Attributen und Klassen durch magische Methoden

● Überladung von Attributen – Überladung von __get und __set

● Methoden – __call und __callStatic

Zum Beispiel implementiert die Anforderungsklasse von Laravel eine Attributüberladung, wodurch der Code prägnanter wird

$name = $request->name;

Dieses Attribut existiert nicht in der Klasse, sondern wird über die magische Methode übergeben. Zu besuchen ist die spezifische Implementierung wie folgt

public function __get($key)
{
    return Arr::get($this->all(), $key, function () use ($key) {
        return $this->route($key);
    });
}

Diese Implementierungsmethode ist weit verbreitet und das Implementierungsprinzip ist einfach zusammengefasst

class Foo
{   
    private $params = [];
    function __construct(array $params = [])
    {
        $this->params = $params;
    }
    public function __set($name, $value)
    {
        $this->params[$name] = $value;
    }
    public function __get($name)
    {
        return $this->params[$name];
    }
    public function __isset($name)
    {
        return isset($this->params[$name]);
    }
    public function __unset($name)
    {
        unset($this->params[$name]);
    }
}

Das obige ist der detaillierte Inhalt vonPHP-Überladung richtig verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Vorheriger Artikel:anonyme FunktionNächster Artikel:anonyme Funktion