Heim  >  Artikel  >  Backend-Entwicklung  >  Sprechen Sie über die Verwendung der Schnittstelle in PHP

Sprechen Sie über die Verwendung der Schnittstelle in PHP

青灯夜游
青灯夜游nach vorne
2020-07-23 17:05:383129Durchsuche

Sprechen Sie über die Verwendung der Schnittstelle in PHP

Tatsächlich hat die PHP-Schnittstelle ihren Zweck.

Es handelt sich um Verträge, Bedienungsanleitungen für andere Entwickler. Es ist jedoch immer noch schwierig zu verstehen, wofür die Schnittstelle verwendet wird.

Basic

Interface ist eine abstrakte Klasse, die nicht direkt instanziiert, aber implementiert werden kann.

Dies ist ein einfaches Beispiel

interface MyInterface {
    public function setName(string $name);
    public function getName();
}

class MyClass implements MyInterface {
    private $name; 

    public function setName(string $name) { 
        $this->name = $name; 
    }

    public function getName() {
        return $this->name; 
    }
}

MyClass muss die Methoden setName() und getName() implementieren. Wenn Sie dies nicht tun, erhalten Sie einen schwerwiegenden Fehler.

Fataler Fehler: Klasse MyClass enthält 2 abstrakte Methoden und muss daher als abstrakt deklariert werden oder die restlichen Methoden (MyInterface::setName, MyInterface::getName) implementieren

Zusätzlich sind die in definierten Methoden Die Barrierefreiheit der Schnittstelle muss öffentlich sein und Klassenmitglieder können nicht in der Schnittstelle definiert werden.

Ursache

Entwickler verwenden Schnittstellen, um das allgemeine Verhalten einer Klasse oder einer Gruppe von Klassen zu beschreiben.

Aber warum ist es nur für die Kapselung der Implementierung verantwortlich und nicht für die Handhabung der Details jeder Klasse?

Zum Entkoppeln! Mit der

-Schnittstelle können Sie die Implementierung ändern, ohne die Details zu ändern, d. h. wie Sie diese Implementierung verwenden.

Weiterführende Beispiele

Die folgende Funktionalität ist für jedes Caching-System erforderlich

  • Cache speichern/einstellen Inhalt
  • Inhalt im Cache abrufen
  • Inhalt im Cache löschen

Auf dieser Grundlage können wir die folgende Cache-Schnittstelle erstellen

interface CacheInterface {
    public function set(string $key, $val);
    public function get(string $key);
    public function delete(string $key);
}

Auf diese Weise können Entwickler wissen, dass sie die Cache-Schnittstelle implementieren müssen. Wir müssen nicht wissen, wie sie implementiert werden. Das Ergebnis ist, dass wir das Cache-System problemlos wechseln können, ohne die Art und Weise seiner Verwendung zu ändern

Daher ist es einfach, das Cache-System zu ändern, ohne die Art und Weise zu ändern, wie das Cache-System im Projekt verwendet wird.

Symfony-Beispiel

Sehen wir uns jetzt die konkrete Anwendung des Beispiels an. Wenn Sie für Symfony ein Caching-System implementieren möchten, ist es am besten, dies wie folgt zu tun:

use Symfony\Contracts\Cache\CacheInterface;

class MyClass {
    private $cache;
    public function __construct(CacheInterface $cache)
    {
        $this->cache = $cache;
    }
}

Injizieren Sie die Cache-Schnittstelle durch Abhängigkeitsinjektion in unsere Klasse. Wenn wir das Cache-System das nächste Mal ändern, muss die MyClass-Klasse keine Änderungen vornehmen.

Mehrere Implementierungen vs. Mehrfachvererbung

PHP unterstützt keine Mehrfachvererbung, die folgende Methode ist nicht möglich

class MyClass extends ClassX, ClassY {}

Teil davon Der Grund, warum dies nicht zulässig ist, liegt am Diamond-Problem.

Sie können es jedoch

class ClassY extends ClassX {}
class MyClass extends ClassY {}

tun, aber ClassX und ClassY können unterschiedliche Dinge behandeln, also die Vererbung verwenden macht keinen Sinn.

Wenn Sie mehrere Verhaltensweisen ausführen möchten, können Sie mehrere Schnittstellen haben

class MyClass implements InterfaceX, InterfaceY {}

Mit anderen Worten, Sie können dafür sorgen, dass einige Klassen einen Teil der Funktionalität teilen, anstatt eine übergeordnete Klasse zu teilen.

Zusammenfassung

PHP-Schnittstelle ist eine Methodenvorlage einer Klasse, die für die entkoppelte Implementierung und Verwendung sehr hilfreich ist.

Diese Funktion ist besonders nützlich, wenn Sie Flexibilität wahren und sicherstellen müssen, dass alle Entwickler eine Reihe von Regeln befolgen.

[Verwandte Tutorial-Empfehlungen: „PHP-Tutorial“]

Das obige ist der detaillierte Inhalt vonSprechen Sie über die Verwendung der Schnittstelle in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen