Bei der Entwicklung von PHP 5 wurde versucht, die Abwärtskompatibilität zu PHP 4 zu wahren. In diesem Abschnitt finden Sie eine Übersicht über Änderungen in PHP 5, die eine Änderung von bestehenden PHP-4-Anwendungen erforderlich macht.
Kopie versus Referenz
Mit der Einführung des neuen Objektmodells werden Objekte
standardmäßig per Referenz übergeben. In PHP 4 wurde stattdessen
stets eine Kopie übergeben. Für PHP-Programme, die wie von PHP 4
gewohnt eine Kopie statt einer Referenz erwarten, kann die
php.ini-Direktive
zend.ze1_compatibility_mode auf On
gesetzt werden.
Konstruktor
In PHP 4 entsprach der Name des Konstruktors dem Namen der
Klasse. In PHP 5 heißt der Konstruktor nun
__construct. Wird in einer Klasse keine
Methode mit dem Namen __construct deklariert, so wird
nach einer Methode gesucht, die den Namen der Klasse trägt.
Wird eine solche Methode gefunden, so wird sie als Konstruktor
benutzt. Wird eine Methode mit dem Namen __construct
gefunden, so wird diese in jedem Fall (unabhängig davon, ob auch
eine Methode mit dem Namen der Klasse existiert) benutzt.
Klassendeklaration vor Objekterzeugung
In PHP 4 war es möglich, ein Objekt einer Klasse zu erzeugen, die zum Zeitpunkt der Instanzierung noch nicht deklariert war. In PHP 5 ist dies nicht mehr möglich, wenn die Klasse Sprachmerkmale verwendet, die mit PHP 5 eingeführt wurden.
Klassen, die nur Sprachmerkmale enthalten, die bereits in PHP 4 zur Verfügung standen, können weiterhin vor ihrer Deklarierung verwendet werden.
Neue Schlüsselwörter
In PHP 5 sind eine Reihe von neuen Schlüsselwörtern hinzugekommen, die nicht mehr als Namen von Klassen, Konstanten, Methoden oder Funktionen verwendet werden können:
abstract
catch
clone
final
implements
interface
private
protected
public
throw
try
Bei der Migration von PHP 4 nach PHP 5 müssen Klassen, Konstanten, Methoden oder Funktionen, die einen dieser Namen tragen, umbenannt werden.
Besondere Methoden
In PHP 5 sind einige Methodennamen hinzugekommen, die mit einer besonderen Semantik verknüpft sind:
__autoload
__call
__clone
__construct
__destruct
__get
__set
__toString
Bei der Migration von PHP 4 nach PHP 5 müssen Methoden, die einen dieser Namen tragen, umbenannt werden.