PHP4 Constructor Style veraltet ab WordPress 4.3

tl;dr – Heißen deine PHP Constructor so wie deine Klassen, dann benutzt du den PHP4 Style und solltest dringend deinen Code ändern und __constructor() benutzen.

Gegen Ende des Jahres wird PHP7 erscheinen. Da WordPress mit der Zeit gehen will und zukünftig auch auf PHP7 setzten möchte wird jetzt schon alles klar Schiff gemacht, dass der spätere Umzug leichter fällt. Eine wichtige Änderung in PHP7 wird sein, dass ein Constructor nun dem PHP5 Style folgen muss.

Derzeit ist es in PHP5 möglich sowohl den Style aus PHP4 sowie von PHP5 zu verwenden. Ab PHP7 wird der alte Style eine E_DEPRECATED Warnung werfen und klar anzeigen, dass hier was geändert werden sollte.

WordPress wird eine deprecated_constructor Warnung schon ab der kommenden Version 4.3 anzeigen (make). Diese Entscheidung soll dem späteren Wechsel auf PHP7 entgegenwirken.

class Foo {
    // Alter Constructor - PHP4 und PHP5
    function foo() {
        // code that constructs our class
    }
}

class Bar {
    // Aktueller Constructor - PHP5+
    function __constructor() {
        // code that constructs our class
    }
}

Muss ich was ändern?

Es gibt viele Plugins, die in ihrem Code etwas ändern müssen um in WordPress 4.3 keine Warnung zu triggern. Hierbei geht es vor allem um Plugins die Widgets integrieren.

Solltet ihr eine der folgenden Varianten benutzen müsst ihr euren Code anpassen: WP_Widget::WP_Widget() und/oder parent::WP_Widget() und/oder {object}->WP_Widget(). Benutzt in Zukunft parent::__construct() in eurem Code.

Chris Christoff hat in einem Gist eine Liste erstellt von Plugins, welche die alten Constructor-Varianten benutzen. In dem Gist stehen Infos was ihr machen müsst, wenn euer Plugin betroffen ist. In der Liste stehen allerdings nur Plugins, die die oben genannten WP_Widget Methoden verwenden. Sollte euer Plugin eigene Constructor im PHP4 Style verwenden müsst ihr diese auch updaten.

Veröffentlicht von Hans-Helge

Als studierter Informatiker arbeitet Hans-Helge gerne als freiberuflicher WordPress Entwickler und betreut neben eigenen Projekten viele andere Webseiten u.A. im ehrenamtlichen Bereich.

Beteilige dich an der Unterhaltung

2 Kommentare

  1. Aber glaubst du wirklich, dass WP auf PHP7 aufspringen wird? Klar „supporten“ müssen sie es, genauso wie bei der Erscheinung von PHP 5.5, als der MySQL-Treiber deprecated wurde und die MySQLi-Weiche eingebaut wurde.

    Ich befürchte eher langfristig gesehen, dass WP durch die ganzen Abwärtskompatibilitäten (noch) fett(er) und langsam(er) wird… Bruch oder Gespräche mit Hostern oder Rücksicht nehmen, das sind die drei Wege.

    … Es wird wohl letzterer werden..

    1. Nein, ich glaube nicht, dass WordPress komplett auf PHP7 springen wird. Die Backwards Compatability wäre ja dann nicht mehr gegeben. Es gab im Make einen Kommentar, dass mit dieser Änderung schon die Backwards Compatability nicht mehr gegeben sei und rund ~15% aller WP Installationen hierbei betroffen sind.

      Ich sehe das aber eher als Change. WP hat damit auch die Möglichkeit etwas „Druck“ auszuüben sodass Leute ihren Code und PHP Versionen endlich mal updaten. Ich bin mal gespannt, wie viele Entwickler ihren Code für 4.3 updaten.

      Ich finde es gut, dass WP diesen Schritt macht auch wenn es nur ein kleiner ist. Backwards Compatibility ist ja zu einem gewissen Grad sinnvoll, aber irgendwann sollte man auch nach Vorne schauen. Wenn ich viele alte Versionen unterstütze, dann hat der Nutzer ja keinen Grund sein System zu aktualisieren (für viele sind ja Security-Patchs kein Grund ein Update einzuspielen – das sieht man ja in den Statistiken – leider )

Schreib einen Kommentar

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