lolli
19-10-2003, 14:45
Hallo.
ich möchte gern in der Klasse Session ein Datenbank-Object $_dbh verwenden. Das Initialisieren der Klasse funktioniert auch noch problemlos, nur leider kann ich mit dem Objekt nicht "normal" arbeiten, da PHP beim overloading scheinbar zwingend die Verwendung der __call-Funktion erfordert.
Ich habe folgendes Beispiel zusammengestellt, um mein Problem zu demonstrieren:
error_reporting(15);
class database {
function Database(){
mysql_pconnect('localhost','root');
mysql_select_db('test');
}
function Query($sql) {
return mysql_query($sql);
}
}
class Session{
var $_data;
var $_dbh;
function Session(){
$this->_dbh=new Database;
// führt zu einem Fehler
$rc=$this->_dbh->Query("select * from all");
}
function __get($key,&$var){
$value=$this->data[$key];
return true;
}
function __set($key,$val){
$this->data[$key]=$value;
return true;
}
//function __call($function,$param){
//
//}
}
overload('Session');
$Session=new Session;
Wie bekomme ich es nun hin, dass ich mit dem Database-Object $this->_dbh "normal"
arbeiten kann, ohne einen hässlichen Umweg über __call($function,$param)
machen zu müssen?
Oliver
ich möchte gern in der Klasse Session ein Datenbank-Object $_dbh verwenden. Das Initialisieren der Klasse funktioniert auch noch problemlos, nur leider kann ich mit dem Objekt nicht "normal" arbeiten, da PHP beim overloading scheinbar zwingend die Verwendung der __call-Funktion erfordert.
Ich habe folgendes Beispiel zusammengestellt, um mein Problem zu demonstrieren:
error_reporting(15);
class database {
function Database(){
mysql_pconnect('localhost','root');
mysql_select_db('test');
}
function Query($sql) {
return mysql_query($sql);
}
}
class Session{
var $_data;
var $_dbh;
function Session(){
$this->_dbh=new Database;
// führt zu einem Fehler
$rc=$this->_dbh->Query("select * from all");
}
function __get($key,&$var){
$value=$this->data[$key];
return true;
}
function __set($key,$val){
$this->data[$key]=$value;
return true;
}
//function __call($function,$param){
//
//}
}
overload('Session');
$Session=new Session;
Wie bekomme ich es nun hin, dass ich mit dem Database-Object $this->_dbh "normal"
arbeiten kann, ohne einen hässlichen Umweg über __call($function,$param)
machen zu müssen?
Oliver