Ankündigung

Einklappen
Keine Ankündigung bisher.

Klassen / Funktion

Einklappen

Neue Werbung 2019

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

  • Klassen / Funktion

    Hi
    Nach vielen (sehr vielen) lesen von Tutorials ist mir immernochnicht klar, warum ( und wann) man Klassen/Objekte benutzen sollte.

    Zum Beispiek wird oft das Beispeil einer MySQL Klasse angegeben, mit der dann zur Datenbank connected wird.
    Aber ist es nicht logischer einfach nur eine function dbconnect zu machen und auszuführen, immerhin entfällt dann sowas wie das Instanzieren des Objekts.

    Und die Beispiele wie Gemüse oder Hamster Klassen kann ich irgendwie auch nicht übertragen, sodass ich nicht verstehe warum man dort eine Klasse und Objekt benutzt anstatt einfach nur function zu benutzen und den Wert in einer Variable zu speichern.

    Ich hoffe ihr könnt mir helfen oder habt noch einen guten Link

    Viele Grüße
    never

  • #2
    Tjo.. das Problem haben viele. Am besten fängst du einfach mal an, deine eigenen Klassen zu schreiben. Die kannst du dann hier posten, damit sie besprochen werden können.

    Welche Tutorials hast du denn gelesen?

    Kommentar


    • #3
      Klassen eignen sich immer dann, wenn viele zusammenhängende Funktionen die gleichen Variablen gebrauchen, also quasi eine "Funktionsumgebung", wobei es i.d.r. mehrere dieser "variablen-sets" geben kann.
      Ein gutes Beispiel ist auch eine Template-Klasse.
      In einer Templateklasse brauchen fast alle funktionen ähnliche variablen, wie z.b. das array mit den zugewiesenen variablen oder der inhalt der templatedatei. Es kann ausserdem mehrere dieser "variablen-sets" geben, die nichts miteinander zu tun haben.

      Wenn du gerade mit PHP anfängst, brauchst du Klassen i.d.r. nicht, und ich würde mich auch erst mit ihnen beschäftigen, wenn ich die grundlagen ohne probleme beherrsche.

      Ein gutes Beispiel ist meiner Meinung nach auch ein Warenkorb. Es passiert zwar i.d.r. nicht, dass du mehrere Warenkörbe in einem script hast, und bei einfachen warenkörben gibt es auch nur eine variable, und zwar ein array mit den ID's der Elemente, die sich im Warenkorb befinden. Dafür gibt es aber viele funktionen, die genau mit dieser variable arbeiten, also elemente hinzufügen, elemente entfernen, den Gesamtpreis errechnen, etc.

      Jetzt wirst du sagen, fein, aber dafür brauche ich doch keine Klasse. Man kann ja auch so einfach einen Eintrag an das Array hängen oder die Funktionen ohne die Klasse bereitstellen.
      Natürlich kannst du das. Aber 1. Machen funktionen einen sinn, da du bei einer umstellung des Warenkorbsystems nur die Funktionen ändern musst, nicht aber jedes script, in dem der Warenkorb benutzt wird. Eine Klasse macht sinn, da es irgendwie quatsch ist, zehn verschiedenen funktionen eine variable als parameter zu übergeben, die sie sich in einer Klasse auch selber holen können. Ausserdem ist die gefahr, dass die variable versehentlich überschrieben/geändert wird, innerhalb einer klasse nicht so hoch wie ausserhalb.

      Kommentar


      • #4
        Hi
        Gelesen habe ich die Tutorials von phpManual, http://tut.php-q.net/klassen.html,
        das OOP Tutorial aus dem Buch von Carsten Möhrke und noch weitere die ich zufällig bei google gefunden habe(eins war auch hier aus dem Forum).

        Ich weiß ja nit worüber ich anfangen soll eine Klasse zus chreiben, da liegt ja das Problem , denn ich weiß einfach nicht wo ich sie einsetzen soll, worin der Vorteil gegenüber einfach Funktionen liegt.
        Zum Beispiel hab ich mehrer Funktionen um Session zu verwalten
        Z.B:
        -Zum setzen von Sessions beim Login
        -natürlich um sie zu zerstören
        -um die Session für die SPrachdatei zu verwalten
        -um (da ich einen timestamp in der DB abspeichere, damit eine session nur für 5 min gültig ist) Sessions in der DB zu aktualsieren falls erforderlich und zu löschen, falls die 5 min abgelaufen sind ohne eine reaktion des users

        soll ich draus etwa eine Klasse machen?

        EDIT:
        @Buhman:
        Also sollte man immer dann Klassen verwenden, wenn es darum geht Variablen zu speichern und diese von mehreren Funktionen gleichzeitig benutzt werden sollen ohne sie jedesmal im Parameter zu übergeben, richtig?

        Kommentar


        • #5
          Zitat von never
          soll ich draus etwa eine Klasse machen?
          Ja, wieso nicht.

          Kommentar


          • #6
            @Corvin:
            Aber dann müsste ich doch in jeder Datein. z.B: beim Login, im header von den "eingeloggten Seiten" diese Objekt instanzieren, aber das ist doch umständlicher als wenn ich einfach nur
            sagen wir mal
            sessionCheck(); aufrufe die dann überprüft updatet löscht etc.

            Kommentar


            • #7
              Warum ist das umständlicher? Du musst so oder so etwas einbinden. Erstelle eine Instanz in einer Datei, die Du dann überall einbindest und Du hast genau den gleichen Aufwand.

              Vielleicht auch hier mal reinlesen:
              http://forum.developers-guide.net/showthread.php?t=317

              Kommentar


              • #8
                der vorteil einer klasse ist der, dass du eigenschaften, die du irgendwann mal festgelegt hast, einfach vererben kannst. mit funktionen müsstest du u.U. 10-12 funktionen ineinander verschachteln, um all diese eigenschaften einem objekt zuzuweisen. all das kannst du dann mit dem aufruf einer einzigen klasse erledigen.

                je nach aufwand den du in deinen scripten betreibst, kann es durchaus auch einfacher sein eine funktion zu verwenden. schneller zu programmieren ist eine kleine funktion allemal, allerdings wird deine klasse nach und nach wachsen, deine funktionen werden nur mehr. irgendwann erfindest du das rad bei funktionen neu und schreibst eine funktion doppelt oder dreifach.....

                Kommentar


                • #9
                  Hi
                  Ich glaube jetzt hab ich den Sinn und den Vorteil von Klassen verstanden

                  Vielen Dank euch allen!!!!!

                  Viele Grüße
                  never

                  Kommentar

                  Lädt...
                  X