dedlfix: PlugIn Manager entwickeln

Beitrag lesen

Tach!

Genau das ist der Sinn einer Vererbung in OOP: Du hast eine Basiklasse (Kern) und eine Klassenerweiterung (Plugin) welche bei Bedarf die Methoden der Basisklasse überschreibt.

Nein, wieviele Plugins man am Ende zum Projekt hinzufügen möchte, weiß man zur Entwicklungszeit normalerweise nicht. Für diese unbekannte Anzahl Möglichkeiten je eine Basisklasse bereitzustellen, ist jedenfalls keine gescheite Vorgehensweise. Vererbung ist nicht die Technik, in der man Plugins grundlegend implementiert. Ein Plugin ist üblicherweise ein eigenes Modul, das erst zur Laufzeit hinzugefügt wird und nicht ins Programm hineinkompiliert. Ob dabei Vererbung verwendet wird oder nicht, ist ein Implementierungsdetail.

Leider versteht PHP dies als Klassenerweiterung, also ich finde der Begriff Erweiterung ist falsch. Denn die abgeleitete Klasse in einer solchen Hierarchie erweitert ja nicht sondern spezialisiert (wie Du ja auch feststellst).

Warum soll das keine Erweiterung sein? Die Grundfunktionalität der Basisklasse wird um spezielle Funktionalität erweitert. Und wenn abstrakte Methoden implementiert werden, ist das zweifellos eine Erweiterung.

Eine andere Form dafür kennt PHP als Interface. Es wäre also zu überlegen ob Du Dein Pluginmodell als Interface oder Klassenerweiterung konzipierst.

Plugins können auf einer Basisklasse aufbauen oder ein Interface implementieren, aber zwingende Voraussetzung ist das nicht. Die Kommunikation zwischen Basisprogramm und Plugin kann auch über Datenströme erfolgen.

dedlfix.