dedlfix: "public static" in PHP 4.x und PHP 5.x

Beitrag lesen

echo $begrüßung;

Methoden, die statisch aufgerufen werden sollen, müssen, um E_STRICT-kompatibel zu sein, als static gekennzeichnet werden. Unter PHP4 war es egal, ob eine Methode dynamisch (à la $this->methode()) oder statisch (à la klasse::methode()) aufgerufen wurde. PHP5 will nur noch eine von beiden Aufrufarten und das auch so gekennzeichnet haben, um E_STRICT-kompatibel zu sein.

Genau das scheint mir noch nicht ganz klar zu sein. Ich habe nun versucht, den kram in eine Bedingungsabfrage (if/else) zu packen, allerdings beseitigt das die Fehlermeldung nicht.

Unter PHP4 durfte man bei der Verwendung von Objekten schludern. Methoden durften sowohl statisch als auch über Instanzen aufgerufen werden. PHP5 ist da etwas strenger geworden. Diese Strenge kann man aber durch E_STRICT aus- und einschalten.

Seit PHP 4 wird der Quelltext vollständig geparst und erst dann ausgeführt. Es ist damit nicht mehr möglich, Syntax-"Fehler" in einer bedingten Anweisung zu verbergen. Das geht nur, wenn du den zweifelhaften Quelltext auslagerst und bedingt inkludierst. Aber: Klassendeklarationen können nicht geteilt werden, sie müssen sich in einer Datei befinden. Man könnte aber mit Vererbung das Problem zu lösen versuchen.

Der ganze Aufwand läuft dann darauf hinaus, mehr oder weniger zwei Versionen pflegen zu müssen. Doch wozu der Aufwand? Verzichte auf PHP4 oder auf E_STRICT.

echo "$verabschiedung $name";