Klassen

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

  • Klassen

    Hallo.
    Mein Problem ist folgendes: Ich habe eine Klasse, die von einer anderen Klasse abstammt, welche die Verbindung zu Datenbank regelt. In dieser Klasse (nicht die mit der Datenbank) habe ich ein paar Funktionen, die ich in einem anderen Skript benutzen möchte, ohne die ganze Klasse zu benutzen, denn es ist wirklich eine ziemlich große Klasse. Nur halte ich es für unsinnig, die Funktionen einfach rauszukopieren, weil ich dann die Funktionen später immer zwei mal erneuern muss. Ist Das Problem deutlich?
    Danke

  • #2
    Der Sinn von Klassen ist ja, sie auch irgendwann mal zu benutzen. Deswegen verstehe ich dein Problem nicht richtig. Wenn du keine Instanz der Klasse erstellen willst, ist es immer noch möglich mit class::method(); statisch auf eine Klasse zuzugreifen. Jedoch kannst du dann nicht mehr mit $this arbeiten und Variablen verändern.

    Allerdings würde ich mir das Design deiner Klasse nochmal anschauen. Kann mir nicht vorstellen, dass es sinnvoll ist eine Klasse so voll zu stopfen, dass man sie nicht mehr verwenden will.

    Kommentar


    • #3
      Im übrigen glaube ich mal per se, das jemand, der eine Klasse hat, die von einer Klasse abgeleitet wurde, die die Datenbank Verbindung handled, und die zudem auch noch so groß ist das er sie nicht einsetzen will, weil sie zu groß ist, und darin auch noch Funktionen hat die er anderswo einsetzen will, erstmal grundsätzlich das Konzept objektorientierter Programmierung nicht verstanden hat ...
      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


      • #4
        Original geschrieben von goth
        Im übrigen glaube ich mal per se, das jemand, der eine Klasse hat, die von einer Klasse abgeleitet wurde, die die Datenbank Verbindung handled, und die zudem auch noch so groß ist das er sie nicht einsetzen will, weil sie zu groß ist, und darin auch noch Funktionen hat die er anderswo einsetzen will, erstmal grundsätzlich das Konzept objektorientierter Programmierung nicht verstanden hat ...
        OffTopic:
        und du bist sicher, dass jemand, der so eine klasse gebastelt hat, die ... *ich blende mal den 280-worte-mittelteil mal aus* ... deinen satz verstanden hat?


        kurzfassung: überdenke die klasse!
        Kissolino.com

        Kommentar


        • #5
          Original geschrieben von Wurzel
          OffTopic:
          und du bist sicher, dass jemand, der so eine klasse gebastelt hat, die ... *ich blende mal den 280-worte-mittelteil mal aus* ... deinen satz verstanden hat?
          Nein
          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


          • #6
            Re: Klassen

            Mein Problem ist folgendes: Ich habe eine Klasse, die von einer anderen Klasse abstammt, welche die Verbindung zu Datenbank regelt. In dieser Klasse (nicht die mit der Datenbank) habe ich ein paar Funktionen, die ich in einem anderen Skript benutzen möchte, ...
            ich nehme mal an, daß in der child-klasse funktionen sind, die zwar die db benutzen, zu deren (der db) verwendung aber nicht nötig sind?

            wenn ja: instanziere dein db-objekt einmal am anfang des scripts, und übergib den klassen ne referenz auf die instanz.
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              Jajaja,
              wie ich das mit der Datenbankklasse löse weiß ich jetzt, nur mit der größeren Klasse habe ich noch ein Problem:
              Ich habe nämlcih gelesen, dass jede Klasse eine Aufgabe bekommen soll, dass war bei mir alles aus der Datenbank zu holen. Nur weiß ich jetzt nicht, wie ich sowas am besten trenne und deswegen frage ich euch, da ihr da hoffentlich mehr Erfahrungen habt.
              Also die Klasse holt Produktdaten, Benutzerdaten, Typdaten...
              Soll ich jeweils für die Produktdaten eine Klasse machen, dann noch eine für die Benutzerdaten...?

              Kommentar


              • #8
                Also, der Sinn einer Datenbankklasse ist es nicht, dass dort zich Methoden stehen die direkt Abfragen machen. Eine Datenbankklasse sollte die Verbindung mit der DB regeln und die grundlegenden Funktionen insert, update, delete und das wohl am meisten gebrauche select z.B. bereitstellen. Das heisst man schickt einen SQL-String an z.B. die select Methode der DB Klasse welche dann ein für dich formatiertes Array zurück gibt welcher den Inhalt der DB Abfrage beinhaltet. Die insert Methode kann dir z.B. die insert_id zurückgeben usw. Eine solche Klasse wird dann initialisiert (Verbindung zur DB hergestellt) und das Objekt wird dann als Referenz an andere Klassen weitergereicht, wie z.B. einer UserManagement oder eine Forums Klasse.
                Eine Forumsklasse sollte jetzt wieder so aufgebaut sein, dass man über z.B. eine init($db); Methode der Klasse das Objekt als Objektvariablen zur Verfügung stellt. In den dortigen Methoden kann man dann über z.B. $this->db->select($sql_String); zugreifen.
                Der init Funktion kann man jetzt z.B. zusätlich noch einen Parameter anhängen (kann man z.B. mit define() regeln) welche DB benutzt wird (SQL, Oracle, MySQL). Und jenachdem welcher Wert übergeben wird, wird halt ein anderer DB-String an die DB-Klasse geschickt.

                OffTopic:
                Da man eigentlich nicht sicher sein kann ob die Datenbank-Klasse die jeweiligen Methoden implementiert freue ich mich schon auf Interfaces bzw. Abstrakte Klassen (kommen beide in PHP5) in der man die Struktur die eine Klasse haben muss vorgeben kann. Dann ist es bestimmt auch möglich (Funktion hab ich gerade net im Kopf) zu überprüfen ob die Klasse das Interface implementiert und das übergebene Objekt gegebenenfalls abweist bzw. false in der init Methode zurück gibt


                MfG Markus

                Kommentar


                • #9
                  Re: Klassen

                  Monsterklasse:
                  Original geschrieben von Realmaker
                  ..., ohne die ganze Klasse zu benutzen, denn es ist wirklich eine ziemlich große Klasse.
                  Der Sinn eine (DB) Klasse besteht doch in der universellen Verwendbarkeit incl. Vereinfachung für die Anwendung - möglichst ohne zeitkostende Mätzchen (schlanker Code). Sollte wirklich mal für eine Anwendung eine zusätzliche Methode benötigt werden, dann kriegt der Vater eben ein Kind.

                  Eine Klasse konzipiert man nicht als eierlegende Wollmilchsau. Dann wird sie dick, fett und ätzend langsam...
                  Nur halte ich es für unsinnig, die Funktionen einfach rauszukopieren, weil ich dann die Funktionen später immer zwei mal erneuern muss. Ist Das Problem deutlich?
                  Ja. Das wäre "objekt orientierter Unfug".

                  Kommentar

                  Lädt...
                  X