Hallo,
erstmal haben wir kein PHP5. Ich habe also meine Interfaces so geschrieben, dass sie in PHP4 funktionieren.
Folgender Code:
class cDB {
function connect($server="",$user="",$passwd="") {
$tmp = cDB::fLateChoose();
$tmp->connect($server,$user,$passwd);
}
function fLateChoose($type="") {
return createDB($type);
} // end function fLateChoose
function errno() {
$tmp = cDB::fLateChoose(); return $tmp->errno();
}
}
function createDB($type) {
static $objects = array();
if(!isset($objects[$type]))
$objects[$type] = eval("return new cMySQL();");
return $objects[$type];
}
Hier wird eine Klasse erstellt und sie dann in tmp abgelegt.
Folgender Code:
class cMySQL extends cDB {
function connect($server,$user,$passwd) {
$this->Resource = mysql_connect($server,$user,$passwd) or die("Uschtl");
}
function errno() {
return mysql_errno($this->Resource);
}
}
So wenn ich diese Beispiel dann folgendermaßen aufruf:
$cDB = new cDB();
$cDB->connect($host,$clogin,$cpassword);
$cDB->errno();
Bekomme ich die Fehlermeldung das Linkresource nicht stimmt. Also keine MySQL-Ressource ist.
Beim Debuggen ist mir aufgefallen, dass die Änderungen die ich in der Klasse cMySQL mache nicht in die Variable objects übernommen werden.
Kann mir jemand einen Rat geben :(
Grüße
Andi