Datenbank Verbindung Klasse!

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

  • Datenbank Verbindung Klasse!

    Hallo!

    Frei nach dem Motto learning by doing hab ich probiert, eine Klasse zu schreiben, die mir den Verbindungsaufbau zu einer Datenbank erleichtert. Sie funktioniert(zumindest die Verbindung). Ich wollte ein kleines Feature einbauen, welches kontrolliert, ob eine Verbindung schon besteht. Hier erstmal mein Code(erwartet aber bitte nicht schon zuviel vom Code--->meine erste, selbstgemachte KLasse )

    PHP-Code:
    class db_class {
        function 
    db_connect($dbhost,$dbuser,$dbpass,$database){
            global 
    $connect;
            if (!isset(
    $connect)) {
                
    $connect=@mysql_connect($dbhost,$dbuser,$dbpass)
     or die(
    "Es konnte keine Verdindung zustande kommen");
                
    $selectdb=@mysql_select_db($database$connect)
    or die(
    "Die Datenbank ".$database."
     konnte nicht ausgewählt werden!"
    );
            return 
    $connect;
            }
            else {
                return 
    $connect;
            }
        }
        function 
    db_query ($sql){
            
        }

    Meine Überlegung ist ja diese-->in der Index.php kommt ja der Aufruf zustande --> $db->db_connect(blabla);(Die Datei wird öfters aufgerufen und somit jedes mal dieser Codeteil auch).

    Jetzt bin ich mir aber nicht sicher, ob hier meine Überlegung, bei der ich in der Funktion db_connect kontrollieren möchte, ob die Variable "$connect" schon besteht, fruchtet. Also ich möchte mit dem !isset Verhindern, dass mehrmals eine Verbindung aufgebaut wird.

    Gibts da irgendwelche Tricks/Tipps, wie man die Datenbankverbindung gut kontrollieren kann?soll ja ressourcensparend arbeitn+g+halbwegs zumindest=)

    Und ja, ich weiß es gibt schon genug DB-Klassen =)aber irgendwann muss ich ja was lernen auch und nicht immer nur abschreiben =)

    Danke im Vorraus
    Zuletzt geändert von nlochat; 29.09.2005, 10:36.

  • #2
    UMBRÜCHE!
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      sorry mein fehler !

      Kommentar


      • #4
        1. hint, bevor ich's vergesse - mach $connect zu einer eigenschaft der klasse, statt es global zu deklarieren.

        ansonsten gibt es ein berühmtes pattern, nennt sich "singleton". ist für anfänger zuweilen nicht leicht zu verstehen, aber es ist trotzdem eine sehr gute lösung.

        PHP-Code:
        class myClass {  
          function &
        instance()
          {
            static 
        $instance;

            
        # achtung, "=" ist schon richtig, auch in PHP 4
            # kein "=&" draus machen.
            
        if (!is_object($instance))
                    
        $instance = new myClass ();

            return 
        $instance;
          }

          function 
        myClass()
          {
             
        # hier wie gewohnt der konstruktor
          
        }

        verwendung:

        PHP-Code:
        # erster aufrug erstellt ein objekt.
        $obj_1 =& myClass::instance();

        # weitere aufrufe liefern eine referenz auf das gleiche objekt.
        $obj_2 =& myClass::instance(); 
        lässt sich veranschaulichen, indem man der klasse eine eigenschaft zuweist, die im konstruktor den timestamp speichert. dann erstellt man $obj_1 und $obj_2 und sieht, dass sie den gleichen (nein, den selben!) timestamp tragen.

        ansonsten kannst du überprüfen, ob die verbindung zu einer db noch besteht, in dem du is_resource() auf die resource anwendest.

        Kommentar


        • #5
          hmmm ein wenig kapier ich es(zumindest den ablauf)

          das einzige was ich nicht gefunden habe (auf php.net) ist static!

          was macht static?

          Kommentar


          • #6
            http://de3.php.net/manual/en/languag...s.scope.static

            Kommentar


            • #7
              danke schön=)

              Kommentar

              Lädt...
              X