4, 5 oder 6?

Teil 4: Migration von PHP 4

Letzteres ist ein selteneres Problem, die Übergabe als Referenz ein häufigeres. Beiden gemeinsam ist, dass die Auswirkungen und Vorkommen schwer festzustellen sind und insofern bei der Migration viel Arbeit macht. Deswegen bietet PHP eine entsprechende Einstellung, die statt der neuen Zend-Engine 2, die diese Änderungen hervorruft, auf die alte Zend-Engine 1 setzt:

Migration von PHP 4

© Archiv

Der Wert der Eigenschaft unterscheidet sich in PHP 4 und PHP 5.
zend.ze1_compatibility_mode = On

Bei dieser Einstellung bleiben die OOP-Funktionen von PHP 5 nutzbar und auch veraltete und aussortierte Funktionen sind nicht wieder verfügbar. In der Realität wird der Kompatibilitätsmodus allerdings dennoch selten eingesetzt, da eine Kombination der neuen Funktionalitäten und der alten Verhaltensweise keinen Sinn macht und sich auch mit so gut wie allen Erweiterungen und Bibliotheken nicht verträgt.

Neben diesen gravierenden Neuerungen gibt es bei einigen Konventionen und Funktionen Änderungen, die nicht abwärtskompatibel sind. So reserviert PHP 5 beispielsweise neue Schlüsselwörter. Sollten Sie also zufällig Pech haben, findet sich in Ihren PHP-4-Funktionsbezeichnungen irgendwo ein neues Schlüsselwort, das in der OOP von PHP 5 zum Einsatz kommt.

Eine Liste finden Sie unter . Dieses Pech hat man in der Realität allerdings selten. Bei den Funktionen hilft ein Blick in . Beispielsweise erlaubt array_merge() nur noch Arrays als Parameter.

Früher ließen sich auch einfache Datentypen wie Strings anfügen. Eine andere Änderung ist eigentlich eher eine ungewöhnliche Verhaltensweise in PHP 4. Die rückwärtsgerichtete Suche in Strings hat in PHP 4 immer die Position des vordersten der vorhandenen Einzelzeichen geliefert - im folgenden Beispiel also 3 für die Position der 4.

In PHP 5 wird der Suchstring als ganzer String gewertet, und nur wenn er vorkommt, wird seine Position zurückgeliefert - im Beispiel also false.

<?php
$value = '1234567890';
var_dump(strrpos($value, '468'));
?>

Objektorientierung

Die größte Zahl an Neuerungen ist in PHP 5 bei der Objektorientierung zu finden. Für die Migration sind die meisten unproblematisch, denn was bisher nicht vorhanden war, kann auch nicht stören. Zwei Dinge sind allerdings geändert. In PHP 4 entsprach der Konstruktor, das heißt, die Methode, die beim Erstellen eines Objektes ausgeführt wird, dem Namen der Klasse.

In PHP 5 gibt es dafür die Sondermethode __construct(). Wenn Sie diese globale Änderung nicht durchführen wollen, können Sie auch noch den alten Konstruktor belassen. Er wird von PHP 5 ebenfalls beim Erstellen des Objektes ausgeführt, allerdings nur, wenn kein Konstruktor mit __construct() vorliegt. Und eine weitere Einschränkung gibt es auch hier: Der Konstruktor mit dem Namen der Klasse wird in PHP 5 nur aufgerufen, wenn er in derselben Klasse liegt.

In PHP 4 war es auch möglich, damit einen Konstruktor in der übergeordneten, vererbenden Klasse direkt auszuführen.Eine weitere Neuerung in PHP 5 sind die Attribute zur Sichtbarkeit. Mit public können Sie angeben, dass eine Variable von außerhalb der Klasse zugreifbar ist, private macht sie nur innerhalb der Klasse verfügbar und protected gibt sie für die Klasse und die erbenden Klassen frei.

PHP 4 kennt diese verschiedenen Sichtbarkeitslevel nicht, sondern verwendet standardmäßig var. In frühen PHP-5-Versionen bis inklusive PHP 5.1.3 hat das Fehlerlevel E_STRICT dafür gesorgt, dass var-Vorkommen einen Fehler ausgeworfen haben und dementsprechend auch einfach beseitigt werden konnten.

Dieses Verhalten wurde allerdings wieder entfernt und var produziert heute auch bei höchstem Fehlerlevel keinen Fehler. Dementsprechend ist die var-Ersetzung kein Muss mehr, aber unbedingt anzuraten. Möchte man pauschal ersetzen, ist die beste Option, public zu verwenden. Ansonsten muss man im Einzelfall prüfen, ob eine Eigenschaft außerhalb des Objekts beziehungsweise der Klasse eingesetzt wird.

Mehr zum Thema

Youtube Sperre umgehen GEMA
Videos freischalten

So umgehen Sie die GEMA-Sperre bei Youtube. Was Sie dazu brauchen, und wie es am einfachsten geht.
Neue Fritzboxen unterstützen den AC-Standard.
WLAN-Geschwindigkeit verdoppeln

Mehr WLAN-Geschwindigkeit: Mit dem WLAN-Standard 802.11ac und den richtigen Geräten und Einstellungen verdoppeln Sie den Datendurchsatz.
Netflix auf dem TV
Programm in der Übersicht

Welche Filme und Serien gibt es bei Netflix eigentlich zu sehen? Was ist neu im Streaming-Angebot? Diese Antworten helfen weiter.
Netflix
Streaming

Preise, kompatible Geräte, Datenrate, Serien- und Filmangebot von Netflix: Wir beantworten die wichtigsten Fragen rund um den Streaming-Dienst.
E.T. – Der Außerirdische
Vorschau auf Film- und Serien-Highlights

Amazon Prime Instant Video lockt im Dezember 2016 mit Film-Highlights wie "E.T.", "Fast & Furious 7" und der Serie "Ku’damm 56​".