PHP und Klassen

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

  • PHP und Klassen

    Asche auf mein Haupt, ich habe mich noch nie mit dem Thema PHP und Klassen beschäftigt :/

    Nun wüsste ich gerne von euch, ob es eine wirklich gute Einführung in das Thema gibt.

    Desweiteren hab ich mir mal zum Testen mit meinem wirklich spärlichen Grundwissen eine Klasse gebaut und möchte von Ecuh wissen, ob ich wenigstens die Grundzüge verstanden hab

    Die Klasse stellt die Verbindung zur Datenbank her und schickt einfache Qerys an selbige:


    PHP-Code:
    <?php 
    error_reporting
    (E_ALL);


    class 
    database
    {
        var 
    $DBhostname        "";
        var 
    $DBdatabase        "";
        var 
    $DBusername        "";
        var 
    $DBpassword        "";
        var 
    $DBtableprefix    ""
            
        function 
    DBconnect() 
        {
            
    $DBconnectionmysql_connect ($this->DBhostname$this->DBusername$this->DBpassword);
            
    $DBselect    mysql_select_db ($this->DBdatabase$DBconnection);
            return 
    $DBselect;
        }
        
        function 
    DBquery($query)
        {
            
    $res mysql_query(mysql_real_escape_string($query));
            return 
    $res;
        }
    }

    $datenbank=new database;

    // Verbindung herstellen
    $connect=$datenbank->DBconnect();

    // einfache Abfrage
    $result=$datenbank->DBquery("select * from ".$datenbank->DBtableprefix."Akquise");

    // Ausgabebeispiel
    while($zeile=mysql_fetch_array($result,$connect))
    {

    }
    ?>

  • #2
    http://peterkropff.de wie für alles in Sachen PHP.

    Was deine DB-Klasse angeht, so gibt es natürlich schon massig gute beispiele die sich natürlich auch zum nacheifern anbieten.

    Bei dir stört mich konkret:
    1) Zugangsdaten haben in der Klasse nichts zu suchen.
    2) Die "Ausgabeschleife" könnte man mit entsprechenden Funktionen noch verschönern.
    3) $connect, $result usw. brauchst du natürlich nicht mehr. Sowas wird alles im Objekt gespeichert.
    Zuletzt geändert von IchBinIch; 27.01.2008, 13:38.
    ICH BIN ICH!!!

    Kommentar


    • #3
      vielen dank,

      ist naütrlich besser, die zugangsdaten in nem config zu spichern und an die funktion zu übergeben. Danke für den Denkanstoss

      funktionen für die ausgabe werd ich mir noch basteln.

      $connect brauch ich nun wirklich nicht, aber ich hab noch ein problem mit $result.

      Bisher:

      PHP-Code:
      // einfache Abfrage
      $result=$datenbank->DBquery("select * from ".$datenbank->DBtableprefix."Akquise");

      // Ausgabebeispiel
      while($zeile=mysql_fetch_array($result,$connect))
      {
      ...... 
      wenn ich nun direkt auf das objekt zugreife:

      PHP-Code:
      // einfache Abfrage
      $query="select * from ".$datenbank->DBtableprefix."Akquise";

      // Ausgabebeispiel
      while($zeile=mysql_fetch_array($datenbank->DBquery($query)))

      würde er die funktion bei jedem durchlauf neu aufrufen.

      könntest du mir da noch nen anstoss geben ?

      Kommentar


      • #4
        Mein erster Vorschlag wäre, dich in Sachen OOP in PHP mit PHP5 zu beschäftigen, damit du auch etwas weiter in die Materie eintauchen kannst.

        $connect sollte als Member angelegt werden, damit du die Verbindungskennung nicht explizit an die Methoden übergeben musst, die sie zum arbeiten brauchen.

        PHP-Code:
        class Database
        {
            private 
        $_connection null;

            public function 
        __construct()
            {
                
        $this->connect();
            }

            public function 
        connect()
            {
                
        $this->_connection db_connect();
            }

            public function 
        query($query_str)
            {
                
        $result db_query($query_str$this->_connection);

                return 
        $result;
            }

        Nieder mit der Camel Case-Konvention

        Kommentar


        • #5
          3) $connect, $result usw. brauchst du natürlich nicht mehr. Sowas wird alles IM Objekt gespeichert.
          ICH BIN ICH!!!

          Kommentar


          • #6
            Schreib dir eine Result Klassen, die am besten noch sowas wie ArrayAccess und IteratorAggregate implementiert und dann arbeitest du dich schön mit mysql_data_seek durch deine results.

            Kommentar


            • #7
              Und schon sind wir bei der fertigen mysqli-Klasse.
              ICH BIN ICH!!!

              Kommentar


              • #8
                Original geschrieben von IchBinIch
                Und schon sind wir bei der fertigen mysqli-Klasse.
                Selbst ist der Mann
                Nieder mit der Camel Case-Konvention

                Kommentar


                • #9
                  Selbst ist der Mann
                  ... und blöd noch dazu.
                  Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                  Kommentar


                  • #10
                    ... und blöd noch dazu.
                    Zum Einstieg in Klassen und OOP - Warum nicht?

                    Kommentar


                    • #11
                      Vielen Dank und sorry für den späten Post,

                      es ging mir nicht um die fertige klasse, die hätt ich mir ja überall abschreiben können.
                      die denkansätze haben mich ne ecke weitergebracht.
                      ich muss ja gestehen, das ich schon recht lange programmiere, aber mich vor klassen immer drücken konnte.
                      nun mag ichs halt lernen.

                      danke nochmal

                      Kommentar


                      • #12
                        Original geschrieben von PHP-Desaster
                        Zum Einstieg in Klassen und OOP - Warum nicht?
                        Und zur Vertiefung schreibt man dann Klassen, welche die mysqli-Funktionalität unter php4 emulieren und sich nur einbinden, wenn die mysqli-Klassen noch nicht vorhanden sind (eine praktische Sache )

                        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                        Wie man Fragen richtig stellt

                        Kommentar


                        • #13
                          Und zur Vertiefung schreibt man dann Klassen, welche die mysqli-Funktionalität unter php4 emulieren und sich nur einbinden, wenn die mysqli-Klassen noch nicht vorhanden sind (eine praktische Sache )
                          Find ich ok ^^ Vielleicht auch noch PDO für Leute ohne entsprechende Extension :P

                          Kommentar


                          • #14
                            das es immer wieder leute geben muss, die topics durch ihre belustigungen verschönern (ansichtssache) müssen.
                            für alle die es immer noch nicht verstanden haben, es geht nicht um eine mysqli klasse, ich hätte auch eine nehmen können die die lustigkeit einiger comments bewertet.
                            ich wollte einen einstieg in klassen, nicht mehr nicht weniger.

                            Kommentar


                            • #15
                              Original geschrieben von Peacie
                              ich wollte einen einstieg in klassen, nicht mehr nicht weniger.
                              Und da ist das Beispiel von ghostgambler durchaus geeignet. Und es ist wirklich praktisch. Das hat übrigens - trotz Fasching - nichts mit lustig zu tun, dazu ist das Leben schliesslich viel zu ernst!
                              Gruss
                              H2O

                              Kommentar

                              Lädt...
                              X