Klasse in Klasse - Problem mit Variablen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Klasse in Klasse - Problem mit Variablen

    Hallo,

    also ich habe da mal wieder ein kleines Problem. Ich habe hier meine Datenbank Klasse und eine Session Klasse. Nun habe ich es so gemacht das ich die Datenbank Klasse folgendermaßen in die Session Klasse einbinde

    PHP-Code:
    class Session {

        var 
    $Db;

        function 
    Session($Db)
        {
            
    $this->Db $Db;
        }

    Aufruf dann halt so

    PHP-Code:
    $Db = new Db();
    $Session = new Session($Db); 
    Soweit so gut, funktionieren tut es fast. Das Problem ist, das die Variablen in der Db Klasse irgendwie "verloren" gehen.

    In der Db Klasse siehts ungefähr so aus:

    PHP-Code:
    class Db {
        
        var 
    $cstat false;

        function 
    connect()
        {
            
    //verbindung aufbauen, wenn erfogreich dann $this->cstat = true;
        
    }

        function 
    query($query)
        {
             if(
    $this->cstat) {
                  
    //query ausführen
             
    }
        }

    So, die Variable cstat wird nach erfolgreichem Verbindungsaufbau auch gesetzt, allerdings ist sie dann in der Funktion query plötzlich futsch wenn ich über die Session Klasse diese Funktion aufrufe.

    Ich hoffe ich habe mich nicht allzu dumm angestellt. Kann mir jemand verraten wo mein Fehler liegt?

    Gruß
    Olli

  • #2
    wie rufst du denn die methode der db-klasse aus der session-klasse auf ?
    fehlermeldung(en) ?
    Kissolino.com

    Kommentar


    • #3
      hmmmm bezweifel zwar, dass es das problem lösen wird, aber probeiren kann man es mach mal

      PHP-Code:
      $Db = new Db();
      $Session = new Session(&$Db); 
      eigtl. sollte es dann nicht gehen, denn DB is ja schon ne referenz

      Kommentar


      • #4
        Original geschrieben von Wurzel
        wie rufst du denn die methode der db-klasse aus der session-klasse auf ?
        fehlermeldung(en) ?
        Ich rufe aus der Session Klasse so auf:

        PHP-Code:
            $this->Db->query("SELECT blah blah"); 
        Es gibt, bis auf die von mir in der DB Klasse bestimmte wenn $cstat nicht true ist, keinerlei Fehlermeldungen, auch nicht mit error_reporting auf E_ALL.



        Original geschrieben von Marskuh
        hmmmm bezweifel zwar, dass es das problem lösen wird, aber probeiren kann man es mach mal

        PHP-Code:
        $Db = new Db();
        $Session = new Session(&$Db); 
        eigtl. sollte es dann nicht gehen, denn DB is ja schon ne referenz
        Das selbe in grün
        Zuletzt geändert von s02; 17.06.2004, 11:59.

        Kommentar


        • #5
          Äh sorry, ich bin kein Klasse-Mensch aber war da nicht irgendwas mit lokalen und globalen Variablen?
          Und gibt Deine Funktion connect irgendeinen Wert zurück?
          (Im sinne von return ($cstat?)weil dazu is sie ja da oder nich. Sonst wärs ja ne Prozedur, die gibt nämlich keinen Wert zurück.
          Und wenn connect() nichts zurückgibt kann query() nix finden.
          oder steh ich im regen?
          Warum baust Du Dein
          PHP-Code:
           if(cstat=true)
           {
          abfrage(query)}
          else {
          irgendwas
          nicht direkt in connect ein?Weil es gibt doch nur
          2 Möglichkeiten sein oder nicht sein. Vielleicht auch müll was ich hier schreibe aber Dein auskommentierter code ist mir nicht ganz klar
          //verbindung aufbauen, wenn erfogreich dann $this->cstat = true;
          so läuft da jedenfalls nix.Guten morgen trotzdem.
          Das Leben ist kein Ponyhof.

          Kommentar


          • #6
            connect() wird auch schon mal aufgerufen?

            bei mir sähe das in etwa so aus:
            PHP-Code:
            <?
            class Db {
                
                var $cstat = false;

                function connect()
                {
                    //verbindung aufbauen, wenn erfogreich dann $this->cstat = true;
                }

                function query($query)
                {
                     if($this->cstat) {
                          //query ausführen
                     }
                }
            }

            class Session {
                var $Db;

                function Session(&$Db)
                {
                    $this->Db = &$Db;
                }
            }


            $Db = &new Db();
            $Db->connect();

            $Session = &new Session($Db);
            ...
            Kissolino.com

            Kommentar


            • #7
              Hoppla, ich hatte connect() nach $Session = new Session($Db); aufgerufen....

              Nun funktionierts, vielen Dank

              Gruß
              Olli

              Kommentar

              Lädt...
              X