[OOP] Objekt immer neu iniziieren?

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

  • [OOP] Objekt immer neu iniziieren?

    Hallo,

    hab mich mal an OOP heran gewagt.

    Funktioniert auch prima, hab eine MySQL Klasse gebastelt. Die Klasse wird auf allen Seiten eingefügt und in der class.php steht am Schluss
    PHP-Code:
    $db = new database(); 
    . Mein Problem ist jetzt da es nur läuft wenn ich auf jeder Seite eine neue Instanz erzeuge.. bei Funktionen gar bei jeder Funktion..

    Kann man so eine Instanz nicht irgendwie globaliesieren?
    Hab mich die letzten 3 Stunden dummgelesen.. bin müde.. vielleicht wäre ja jmd. so nett und hilft mir, danke

    gn8

  • #2
    Natürlich musst Du für jede Seite eine neue Instanz erstellen ... wie anders sollte es auch laufen ... und GLOBAL sollte Dir bekannt sein ... !
    carpe noctem

    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

    Kommentar


    • #3
      Mhhh das kann aber nicht sein.. mein System läuft über Templates.. und deswegen steckt schon überall eine Instanz drin.. es funktioniert aber nur wenn ich wirklich auf alles Seiten nochmals eine iniziiere.. -.- Und bei Funktionen ist es ja noch doofer.. es muss doch einen einfacheren Weg geben, oder?

      Und mit global hab ich es schon probiert, das geht weder so:
      PHP-Code:
      global $db = new database(); 
      Noch so:
      PHP-Code:
      $db = new database();
      global 
      $db

      Kommentar


      • #4
        Liess mal das 2. Posting ...
        http://www.php-resource.de/forum/sho...threadid=45924
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar


        • #5
          Ehm... sehr lustig
          1. steht da nichts von OOP und
          2. versteh ich einfach nicht warum ich jedesmal ein neues Objekt anlegen muss wenn ich es doch schon nach der Klasse in class.php getan habe und dann diese Datei immer inkludiere.. -.-

          Kommt schon da gibt es doch bestimmt irgendwas, ich find einfach nix *heul*

          Kommentar


          • #6
            wenn du hinter der definition eine instanz erzeugst, und dann die datei includest, dann solltest du auch damit arbeiten können. zeig deinen code.

            idr. solltest du die instanz aber erst da erstellen, wo du sie nutzt,

            Kommentar


            • #7
              Stichworthinweis:

              "Referenz"
              TBT

              Die zwei wichtigsten Regeln für eine berufliche Karriere:
              1. Verrate niemals alles was du weißt!


              PHP 2 AllPatrizier II Browsergame

              Kommentar


              • #8
                könnte generell mal nicht schaden ; )

                Kommentar


                • #9
                  Also erstmal meine Klasse:

                  PHP-Code:
                  <?php

                  /**
                   * Short description of class datbase
                   *
                   * @access intern
                   * @author moep
                   * @since 17.2004
                   * @version 1
                   */

                  class database
                      
                  {

                          var 
                  $linkID false// verbindungs id
                          
                  var $resid false// resourcen id vom letzten query
                          
                  var $error false// -> true wenn fehler ausgegeben werden soll..
                          
                  var $dbuser "xxx"// DB User
                          
                  var $dbpasswd "xxx"// DB Passwort
                          
                  var $dbhost "localhost"// DB Host
                          
                  var $db "blub"// DB Name

                          
                  function database()
                              {
                                  
                  $this->connect_db();
                              }
                          
                          function 
                  connect_db()
                              {
                                  
                  $connect mysql_connect($this->dbhost$this->dbuser$this->dbpasswd);
                                  if (!
                  $connect
                                      { 
                                          
                  $this->error_out(); 
                                          return 
                  false;
                                      }
                                  
                  $this->linkID $connect;
                                  
                  $connect mysql_select_db($this->db$connect);
                                  if (!
                  $connect
                                      { 
                                          
                  $this->error_out(); 
                                          return 
                  false;
                                      }
                                  return 
                  $this->linkID;
                              }
                          
                          function 
                  query($sql)
                              {
                                  if(!
                  $this->linkID)
                                      {
                                          if(
                  $this->error)
                                              {
                                                  
                  $this->error_out("Nicht verbunden.");
                                                  return 
                  false;
                                              }
                                      }
                                  
                  $result mysql_query($sql,$this->linkID);
                                    if (!
                  $result
                                      { 
                                          
                  $this->error_out(); 
                                          return 
                  false;
                                      }
                                  
                  $this->resID $result;
                                    return 
                  $result
                              }
                              
                          function 
                  error_out($text=NULL)
                              {
                                  if(!
                  $this->error) return;
                                  if(!
                  mysql_errno()) return;
                                  if(
                  $text != NULL)
                                      { echo(
                  '<font color="#FF0000">Datenbankfehler: <strong>'.$text.'</strong></font><br>'); }
                                  else
                                      { echo(
                  '<font color="#FF0000">Datenbankfehler: <strong>'.mysql_error().'</strong> (Nummer: <strong>'.mysql_errno().'</strong> )</font><br>'); }
                              }

                  $db = new database(); //hier erzeug ich dann das objekt...
                  und dann hier eine beispiel funktion:

                  PHP-Code:
                  function eingeloggt() // Prüft wieviele DB-Einträge mit der lokalen Session Vorhanden sind. Ist nur einer vorhanden ist der User eingeloggt!
                           
                  {
                  // wenn ich hier '$db = new database();' einsetze läuft es.. ansonsten nicht.. das ist mein problem ^^          
                  $db->query("UPDATE `users` SET `UserSession` = NULL WHERE `UserLastAction` < NOW() - INTERVAL 30 MINUTE");
                            
                  $db->query("UPDATE `users` SET `UserLastAction` = NOW() WHERE `UserSession` = '".session_id()."' ");
                            
                  $erg $db->query("SELECT * FROM `users` WHERE `UserSession` = '"session_id() ."' LIMIT 1"); 
                            
                  $row mysql_num_rows($erg);
                            return (
                  $row == 1);
                           } 
                  EDIT:
                  Das mit Referenz schau ich mir mal an.. danke

                  Kommentar


                  • #10
                    alternativ könntest du ja auch, wie im manual beschrieben, in die funktion global $db; schreiben (wobei referenzen meiner meinung nach eleganter sind)
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      Hatte ich probiert.. (also global $db; in function) greift leider auch nicht.. ich habs jetzt mal mit den Referenzen probiert, aber keine Ahnung ob ich das jetzt so richtig verstanden hab?!

                      PHP-Code:
                      global $db;
                      $db =&new database(); 
                      So steht das jetzt am Ende von der class.php ... funzt leider nicht ...

                      Kommentar


                      • #12
                        Da es sich um ein Usermanagement geht, schreib für das UM auch eine Klasse, und gib das DB-Objekt da rein.

                        PHP-Code:
                        $User->db =&new DB(); 
                        Du weißt schon, an welcher stelle man das global setzten muss?

                        Ich hab nen Scrollbalken.

                        Kommentar


                        • #13
                          Tjo.. das hatte ich mir auch schon überlegt.. naja komm ich wohl nicht drumrum :/ trotzdem danke!

                          Kommentar


                          • #14
                            Hab mein Posting noch editier.

                            Kommentar


                            • #15
                              hmmm also deinen letzten Post versteh ich irgendwie nicht.. kannst mir nicht noch einen kleinen Tip geben? Soll ich jetzt alles in eine Klasse packen oder wie? Und global setz ich doch in die funktionen oder, aber was bringt mir das dann kann ich gleich überall ein neues Objekt reinhauen -.-? Also ich bin grad total raus.. jetzt hab ich soviel über Referenzen und so gelesen das ich garnichts mehr begreif
                              Zuletzt geändert von roNn; 18.10.2004, 16:53.

                              Kommentar

                              Lädt...
                              X