Announcement

Collapse
No announcement yet.

class ... extends ... extends ????

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • class ... extends ... extends ????

    Hallo zusammen,

    ich habe folgende Frage:
    Ich bin dabei eine Sammlung diverser Funktionen in eine Bibliothek zusammenzufassen. Dabei habe ich eine Hauptklasse und diverse Unterklassen, also class xlib { ... } und class xlib_debug { ... }.

    Nun möchte ich eine andere Bibliothek (ezsql) direkt mit in diese Bibliothek einbinden.
    In meinem Kopf würde das so aussehen:
    PHP Code:
    class xlib_mysql extends xlib_database extends xlib 
    (xlib_mysql ist die MySQL-Datei von ezSql und xlib_database die core von ezSql)
    Ist das so / so ähnlich möglich oder muss ich mir da weas anderes einfallen lassen?

    Viele Grüße und Danek für eure Antworten im vorraus.

  • #2
    PHP unterstützt keine Mehrfachvererbung.
    Christian

    Comment


    • #3
      Hi,

      danke für die kurze Antwort. Das ist eigentlich schon alles was ich wissen wollte

      Wie würdest du dieses Problem lösen?
      Muss ich jede Funktion in die Klasse xlib->database mit integrieren?

      Comment


      • #4
        Muss ich jede Funktion in die Klasse xlib->database mit integrieren?
        Weiss ich nicht, kenne die Libs nicht....

        Aber üblicherweise versucht man eine Kette zu bilden

        C erbt von B
        B erbt von A

        Wenn nun D von C erbt kann sie auf A und B zugreifen, sofern die Modifikatoren richtig gesetzt sind
        Christian

        Comment


        • #5
          Also quasi anstatt von
          PHP Code:
          class xlib_mysql extends xlib_database extends xlib 
          lieber folgender Code
          PHP Code:
          class xlib_mysql extends xlib_database 
          Habe ich das so richtig verstanden?

          So wäre C = xlib_mysql, B = xlib_database und A = xlib.
          xlib_mysql erbt von xlib_database und xlib_database von xlib.

          So macht das auch irgendwie mehr Sinn

          Comment


          • #6
            Wenn xlib_database von xlib erbt...
            Christian

            Comment


            • #7
              Ich würde hier jetzt meinen Composition over Inheritance Hut aufsetzen und gar nicht erst versuchen 2 Concerns in eine Klasse zu wursteln. Wenn es möglich ist würde ich auf Vererbung verzichten (und das kann man wirklich sehr sehr oft). Damit erhältst Klassen die wesentlich weniger aneinander gekoppelt sind und die Zuständigkeitsbereich der einzelnen Klassen sind auch sauberer definiert. Ausserdem lassen sie sich später auch leichter refactoren, da sowieso nur aus kleinen Teilen zusammengebaut.

              Comment


              • #8
                Hi,

                der einzige bisherige grund ist eigentlich nur um die struktur der ezsql-lib beizubehalten.
                Ich habe mir mal die einzelnen mysql, mssql, postgresql, usw. Dateien angeschaut und dort sind eigentlich nur die Funktionen, die auf die jeweillige Sprache zugeschnitten sind. Ich könnte also in die Funktionsnamen ein _mysql / _mssql / etc integrieren und überall die amen anpassen und anschließend mit in die xlib->database übernehmen.

                Comment


                • #9
                  Wenn die momentane Architektur auch so gebaut ist bzw. das Framework es so vorgibt, dann sollte man auch dabei bleiben. Bin in PHP nicht wahnsinnig tief drin. Ich denke nur dass Vererbung oft zu leichtfertig dazu "missbraucht" wird um irgendwelche Sachen zusammen zu bringen die nichts miteinander zu tun haben

                  Comment

                  Working...
                  X