easyLink v3 – Plugin Instanz einbinden

Für viele Nutzer scheint bei der Entwicklung eines Plugins für easyLink v3 die Einbindung der jeweiligen Klassen-Instanz ein großes Problem darzustellen und daher möchte ich euch heute verschiedene Wege aufzeigen, mit deren Hilfe man dieses Problem lösen kann.

Grundsätzlich sollte man bei der Programmierung von Plugins die OOP Struktur der Software beibehalten und die wesentlichen Teile der Erweiterung auch als eigenständige Klasse schreiben. Das ist zum einen wesentlich sauberer als eine Ansammlung von Funktionen und bietet zum anderen ebenfalls wieder Möglichkeiten zur Erweiterung.

Für unser Beispiel hat das Plugin nun eine Klasse mit der Bezeichnung LastEntryList und da mit mit einer Klasse allein nichts anfangen kann, müssen wir natürlich auch eine Instanz dieser Klasse erzeugen. Dieses geschieht daher wie üblich direkt nach der Deklarierung der Klasse.


Der Vorteil dieser Variante ist nun, dass wir durch das inkludieren der Plugin-Datei, was ja automatisch geschieht, auch sofort eine Instanz der gesamten Klasse zur Verfügung haben. Wir können jetzt also über die Variable $LastEntryList vollkommen problemlos auf die einzelnen Methoden der Klasse zugreifen.

Für den Fall, dass wir die Instanz innerhalb einer anderen Klasse, Methode oder Funktion benötigen, müssen wir sie natürlich über den bekannten Befehl global verfügbar machen.


Manchmal stehen wir aber vor dem Problem, dass die Erzeugung der Instanz direkt bei inkludieren eines Plugins zu massiven Problemen führen kann, weil z.B. zu diesem Zeitpunkt bestimmte Funktionen oder Methoden noch nicht verfügbar sind.

Das geschieht in der Regel immer dann, wenn das Plugin innerhalb der Methode __construct() auf die Template-Klasse zugreifen möchte. Für diesen Fall bietet jedoch create_function() in Verbindung mit einem beliebigen Hook wie z.B. IndexEnd die Lösung.


Bei dieser Vorgehensweise wird die Instanz also bei erreichen des Hooks IndexEnd erzeugt und somit natürlich auch erst nach der Initialisierung der Template-Engine.

Unter PHP 5.3.0 wird es hier jedoch einige Änderungen geben, denn dort ist ja erstmals auch das deklarieren so genannter Lambda-Funktionen direkt im Quellcode möglich und natürlich kann auch das direkt in unser Beispiel übertragen werden.


Ich hoffe, dass ich mit diesem Beitrag einige Fragen beantworten konnte und vielleicht bekommen wir ja in Kürze ein nettes Plugin aus dem Kreis der Nutzer zu sehen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.