4, 5 oder 6?

Teil 2: Migration von PHP 4

Im Gegensatz zu den Short-Open-Tags taucht die Einbindung von PHP-Code mit Prozenzeichen <% %> kaum auf. Diese Variante wird in der php.ini mit asp_tag deaktiviert und sollte bei der Migration - sofern vorhanden - auf jeden Fall beseitigt werden.

Neben der Einbindung hat sich auch bei den Dateinamen ein bisschen was geändert. Die Commandozeilen-Version von PHP ist ins Hauptverzeichnis gewandert und heißt nun statt cli/php.exe nur noch php-cli.exe. Ebenfalls umbenannt wurden das Apache-Modul und die CGI-Variante von PHP .

Migration von PHP 4

© Archiv

In den meisten Fällen sind die Änderungen unproblematisch, da sie entweder beim Hoster auf eine bestehende Installation zugreifen, oder PHP 5 separat installieren.

Grundsätzliches

Eine der bedeutsamsten und problematischsten Änderungen bei der Migration ist der Wechsel bei der Übergabe von Objekten an Funktionen. In PHP 4 erfolgte dies als Wert. Das heißt, zwischen dem übergebenen Parameter und dem Original gab es keine Verbindung mehr. Optional konnte man per &-Operator als Referenz übergeben. In PHP 5 ist nun - wie in den meisten modernen objektorientierten Sprachen - die Übergabe als Referenz der Standard.

Um dieses Problem zu verstehen, sehen Sie sich zuerst ein sehr einfaches Beispiel an, wo eine Referenz eingesetzt wird:

<?php
$b = 2;
$a = &$b;
$b = 3;
echo $a; //3
echo $b; //3
?>

Hier erhält die Variable $a eine Referenz auf die Variable $b. Das heißt, beide Variablen verweisen auf denselben Wert. Egal, ob im Folgenden der Wert von $a oder $b geändert wird, die Änderung wirkt sich auf beide Variablen aus. Bei der Übergabe eines Wertes an den Parameter in einer Funktion wird dieser Wert in PHP 4 standardmäßig nicht als Referenz gehandhabt:

$a = 2;
$b = 3;
function summe($a, $b) {
$a += $b;
}
summe($a, $b);
echo $a; //2

Für alle einfachen Datentypen wie die Zahlen in diesem Beispiel ist das in PHP 5 genauso. Die Werte werden als Kopie abgelegt. Das heißt, im Hauptspeicher hält PHP den Wert der Variablen $a vor. Der Parameter $a in der Funktion ist ein davon getrennter Wert.

Migration von PHP 4

© Archiv

Der Wert der Eigenschaft unterscheidet sich in PHP 4 und PHP 5.

Dieses Verhalten können Sie für PHP 4 und 5 gleichermaßen ändern, indem Sie dem Parameter ein kaufmännisches Und voranstellen und damit anzeigen, dass es sich um eine Übergabe als Referenz handelt:

$a = 2;
$b = 3;
function summe(&$a, $b) {
$a += $b;
}
summe($a, $b);
echo $a; //2

Möglich ist auch die Angabe im Aufruf der Funktion. Die Übergabe als Referenz gilt dann nur für diesen Aufruf:

summe(&$a, $b);

Diese Variante ist allerdings nicht empfehlenswert, da dadurch schwer kontrollierbar ist, wann ein Parameter als Referenz und wann als Wert übergeben wird. Diese Übergabe zur Laufzeit (engl. call time) lässt sich dementsprechend mit der Option allow_call_time_pass_reference in der php.ini deaktivieren.

Nun aber zur geänderten Situation bei Objekten: Sehen Sie sich dieses Beispiel an.

class Werte {
public $value1 = 2;
public $value2 = 3;
}
$werteObj = new Werte();
function summe($werte) {
$werte->value1 += $werte->value2;
}
summe($werteObj);
echo $werteObj->value1;

Mehr zum Thema

HTML5: Quick Reference Guide
Ratgeber: "HTML5"

Die wichtigsten Tags auf einen Blick: In unserem praktischen Arbeitsblatt finden Sie einen wertvollen Begleiter für die Umstellung Ihrer Webprojekte…
internet, webdesign, google, content, ranking, seo, suchmaschine
Ratgeber: Urheberrecht

Einzigartige Inhalte bieten Lesern Mehrwert und sind ein wichtiges Qualitätsmerkmal. Ärgerlich, wenn sich jemand durch Kopieren an fremden…
Die besten HTML5-Tipps
Neue Tipps & Tricks für blitz.io

Wer die Leistung einer Applikation ermitteln möchte, braucht keine Skripte zu schreiben, sondern kann einen der zahlreichen Online-Dienste…
image.jpg
Ratgeber: Webentwicklung

Die clientseitige Javascript-Entwicklung bietet fast keine Entwicklungsumgebungen und auch keine vernünftigen Werkzeuge zur Fehlersuche. Eine der…
internet, webdesign, meteor, webapplikationen
Ratgeber

Mit Meteor sollen Entwickler in kurzer Zeit Umgebungen für Webapplikationen erstellen können, ohne sich um lästige Details kümmern zu müssen. Wir…