Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Problem mit überladener Klasse und Objekten

  1. #1
    Registrierter Benutzer Avatar von lolli
    Registriert seit
    20.09.2000
    Beiträge
    166

    Question Problem mit überladener Klasse und Objekten

    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:
    PHP-Code:
    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
    Geändert von lolli (20-10-2003 um 14:46 Uhr)

  2. #2
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Hallo!

    Soweit ich informiert bin verhält sich das Overloading generell etwas seltsam, wenn es um eingebettete Objekte geht. Ist ja aber auch noch experimental.
    Ich bin ehrlich gesagt auch noch nicht dahintergekommen für was man es bei PHP überhaupt benötigen sollte - vielleicht kannst du mir das ja mal erläutern.

    Ach ja... für alle die, die nicht wissen worum es eigentlich geht:
    http://de3.php.net/overload
    http://www.phppatterns.com/index.php...leview/28/1/2/


  3. #3
    Registrierter Benutzer
    Registriert seit
    10.03.2001
    Ort
    Delmenhorst
    Beiträge
    118

    Re: Problem mit überladener Klasse und Objekten

    Original geschrieben von lolli

    class Session{
    var $_data;
    var $_dbh;
    function Session(){
    $this->_dbh=new Database;
    // führt zu einem Fehler
    $rc=$this->_dbh->Query("select * from all");
    }
    fehlt beim "new Database" nicht die Funktionsklammer?

    also new Database()

    comrad
    Holarse.de - Spielen unter Linux

  4. #4
    Registrierter Benutzer Avatar von lolli
    Registriert seit
    20.09.2000
    Beiträge
    166
    Jein. Es klappt auch ohne.
    Eine nicht saubere Lösung wäre es, in den entsprechenden Funktionen mit einer Zwischenvariable zu arbeiten:
    PHP-Code:
    // $rc=$this->_dbh->Query("select * from all");
    $tmp=$this->_dbh;
    $rc=$tmp->Query("..."); 
    Aber das ist nicht wirklich mien Ziel....

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •