Hallo DPler
,
ich sitze gerade an einem etwas merkwürdigem Problem, welches mir nicht erlaubt einen gemeinsamen Konstruktor für PHP4 und PHP5 zu bauen.
Unter PHP5 wurde der Konstruktor in der Methode
__construct() untergebracht, während er bei PHP4 noch in einer Funktion mit dem Klassennamen lag. Somit hatte ich die überlegung, um nicht Kompatibilitätsprobleme zu bekommen, in dem PHP5-Konstruktor den PHP4-Konstruktor aufzurufen, und somit Schreibarbeit/Größe der Datei zu minimieren. Dabei gibt es aber nun das Problem, dass ich einen 500-Fehler zurückbekomme.
Somit kam ich auf folgendes:
Code:
<?php
echo 'teststart -- ';
class ctest {
protected $querytext = '';
public function getquerytext() {
return $querytext;
}
//PHP5
function __construct() {
_constructor();
echo 'PHP5-constructor';
}
//PHP4
function ctest() {
_constructor();
echo 'PHP4-constructor';
}
//Globaler Konstruktor
private function _constructor() {
echo 'ctest created';
}
}
echo 'creating object -- ';
$myct = new ctest();
echo ' -- object created';
?>
Allerdings bekomme ich als Ausgabe nur
teststart -- creating object -- zurück. Also wird anscheinend kein Konstruktor aufgerufen. Kommentiere ich nun meinen eigenen Konstruktor aus, funktioniert alles.
Aber wie kriege ich es hin, Kompatibilitätsprobleme zu vermeiden, aber auch möglichst alles kompakt zu halten?