3.7. Präfixe und Entwurfsmuster

Sie haben mehrere Möglichkeiten Ihr neues Plugin zu programmieren:

  1. Zum einen können Sie nur mit PHP-Funktionen arbeiten (auch klassische, traditionelle oder prozedurale Programmierung genannt);
  2. Sie entwickeln objektorientiert und nutzen für alle Funktionen dann Klassenmethoden;
  3. Sie benutzen PHP-Namespaces;
  4. oder Sie benutzen einige der bekanntesten Entwurfsmuster.

Nutzen Sie ersteres, sollten Sie es sich angewöhnen, alle Funktionen mit einem Präfix zu versehen. So wird aus der Funktion meine_funktion() jetzt mm_meine_funktion(). Als Präfix können Sie nutzen, was Sie wollen. Jedoch sollte am Anfang keine Zahl stehen und je mehr Buchstaben Sie benutzen, desto besser. Achten Sie auch darauf, dass Sie immer das gleiche Präfix nutzen, sonst wird es bei größeren Projekten schnell kompliziert. In unserem Beispiel nutzen wir für das Präfix die Initialen mm, was letztlich für Max Mustermann steht.

Aber warum macht man das? WordPress definiert intern selbst sehr viele Funktionen ohne sie in Klassen zu verpacken. Das führt letztendlich dazu, dass Sie den gleichen Namen nicht mehrfach verwenden dürfen und können.

Es könnte Ihnen also irgendwann einmal in den Sinn kommen, eine get_post Funktion zu erstellen weil Sie vielleicht noch nicht allzu sehr mit dem Core vertraut sind und nicht wissen, dass die Funktion in WordPress bereits existiert. Sie erhalten dann einen PHP-Fatal Error mit dem Hinweis, dass die Funktion bereits deklariert wurde.

Besser ist es natürlich, eine Funktion mit dem Namen mm_get_post zu erstellen, die dann die gewünschten Aktionen ausführt, die Sie benötigen. Und natürlich, nur sofern nicht bereits eine WordPress-interne Funktion existiert, die dasselbe macht.

Mit (globalen) Variablen und Klassennamen sollten Sie genauso verfahren. Ein gutes Beispiel hier ist die globale Variable $post. Definieren und überschreiben Sie diese Variable führt das möglicherweise zu unvorhersehbaren Ergebnissen. WordPress geht immer davon aus, dass sie existiert.

Übrigens sollten Sie auch Javascript Variablen, Funktionen und CSS-Klassen mit einem Präfix versehen. Alternativ – wie oben beschrieben – können Sie auch Namespaces nutzen und/oder objektorientiert mit einschlägigen Entwurfsmustern arbeiten.

Andere Programmierstile

In den letzten Jahren wurde WordPress in den StackOverflow-Umfragen immer öfter zur unbeliebtesten Web-Plattform gewählt. Grund dafür ist – wie zuvor bereits angemerkt – dass WordPress stark rückwärtskompatibel ist. Das heißt, dass auch noch ältere PHP-Versionen (derzeit Version 5.6) weiter unterstützt werden. Dies sorgt dafür, dass Entwickler keine neuen Features nutzen können, die in PHP 7.0 und höher Einzug gehalten haben. Als Beispiel sei hier die Typen-Deklaration genannt.

Aber es tut sich etwas. Die PHP-Community lässt den Support für ältere PHP-Versionen immer weiter auslaufen. Dies zwingt die Webhoster zu einem Upgrade und dies zwingt letztlich auch WordPress dazu, die PHP-Version weiter anzuheben. In WordPress 5.2 wird die minimale PHP-Version von 5.4.x auf 5.6.20 angehoben. Ende 2019 dann auf PHP 7.0.

In diesem Buch nutze ich weitestgehend den prozeduralen Programmierstil. Ich denke, dass dieser Code für die meisten Anfänger leichter zu lesen und zu verstehen ist. Gerade bei kleineren Plugins wie ich sie in diesem Buch als Beispiele aufführe.

Ich bin mir aber bewusst, dass dieses Vorgehen ein Auslaufmodell ist. Aus diesem Grund werden Sie zukünftig auch Beispiele in den diversen Entwurfsmustern finden.