Ankündigung

Einklappen
Keine Ankündigung bisher.

CMS Architektur

Einklappen

Neue Werbung 2019

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

  • CMS Architektur

    Hallo Community,
    derzeit entwickel ich und ein Freund ein CMS, nun mein "Problem" derzeit ist eig. nur der Aufbau bzw. die Initierung der Klasse. Ich habe eine System Klasse die DB Verbindung, Template Lädt und System Einstellungen ausließt. Nun will ich ein Cache System in eine Klasse auslagern und auf die DB Verbindung zugreifen(derzeit via sytem:y). Ich habe unteranderem auch mehrere Functionen und um dort auf die Datenbank zuzugreifen müsste ich jedes mal die Klasse System initieren, wie sieht das mit der Performance aus? Wie kann ich das mit den Klassen besser lösen? Habt ihr evtl Tipps für mich?


    mfg

  • #2
    Ich versteh nicht wirklich wodrauf du genau hinaus willst? Performance bei der Initierung einer Klasse? Kommt drauf an was die Klasse macht, nur eine Instanz zu erstellen ist nicht unbedingt so schlimm.

    Ansonsten wenn dein Problem ist dass du die Instanzen über verschiedene Klassenhinweg nutzen möchtest dann solltest du dir mal nen paar Themen über Singleton, Registry-Pattern oder Dependency-Injection durchlesen.

    Kommentar


    • #3
      Also ich möchte eig. nur wissen wie ich das so Strukturieren kann dass ich z.b. die System Klasse einmal initiere(singleton) und dies dann global bzw. in anderen functionen verfügbar ist...

      Kommentar


      • #4
        Du sagst es doch schon selbst, Singleton wäre eine Lösung dafür.

        Kommentar


        • #5
          Ähm du hast dir selbst die Antwort gegeben?!
          zB Singleton
          Oder habe ich da was falsch verstanden?

          Edit: verdammt, zu langsam



          Edit2:
          Und was passt nicht an Aggregation(ich denke das du das meintest oder?)
          Ich wüsste nciht, wieso das schlecht für die Performance sein sollte

          Kommentar


          • #6
            Ja eig. hab ich nur ne Bestätigung gebraucht xD

            Kommentar


            • #7
              Wobei, wenn ich mir das nochmal durchlese, geht es doch um die "Übergabe" div. Klassen an andere? (Aggregation)

              zB
              PHP-Code:
              class FOOBAR {}
              class 
              foo {
              public 
              $bla;
              private 
              $db;

              public function 
              __constructorFOOBAR $bazFOOBAR $db)
              {
              $this->bla $baz;
              $this->db $db;

              Das hat ja nicht wirklich was mit singleton zu tun.
              falls dir das nicht passt, könnte man ja zb das Registry Pattern einsetzen

              Kommentar


              • #8
                Ja es geht unteranderem um die Übergabe ....

                Mit 1x initieren sollten die Funktionen der Klassen überall verfügbar sein bzw. das Objekt das die Initierung hat.

                Wie könnte ich das dann mit Registry Pattern "lösen"?

                Kommentar


                • #9
                  Ich denke wenn du weißt was das Registry Pattern ist, dann sollte es wohl selbsterklärend sein wie man es benutzt.

                  Kommentar


                  • #10
                    Das hat ja nicht wirklich was mit singleton zu tun.
                    Wieso nicht? Das kann man genauso mit ST nutzen. Du musst die Instanz eben außerhalb des Objekts holen. Analog für Registry.
                    [COLOR="#F5F5FF"]--[/COLOR]
                    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                    [COLOR="#F5F5FF"]
                    --[/COLOR]

                    Kommentar


                    • #11
                      Bei Singleton geht es doch IMHO darum, dass es nur eine Instanz von einem Objekt geben darf und nicht um die "globale Verfügbarkeit", oder?

                      Deswegen hat es meiner Meinung nach, nichts mit dem "verfügbar machen" eines Objektes in einem anderen Objekt zu tun, egal ob nun durch Aggregation oder Komposition,
                      .

                      Kommentar


                      • #12
                        Bei Singleton geht es doch IMHO darum, dass es nur eine Instanz von einem Objekt geben darf und nicht um die "globale Verfügbarkeit", oder?
                        Soll es. Der übliche Ansatz nutzt aber immer eine globale Variable (IMHO kann es gar keine Alternative geben), von daher impliziert ST auch immer globale Verfügbarkeit.
                        [COLOR="#F5F5FF"]--[/COLOR]
                        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                        [COLOR="#F5F5FF"]
                        --[/COLOR]

                        Kommentar


                        • #13
                          HM, da stehe ich wohl gerade etwas am Schlauch.

                          Kommentar


                          • #14
                            Ich glaube, wir meinen beide dasselbe.
                            [COLOR="#F5F5FF"]--[/COLOR]
                            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                            [COLOR="#F5F5FF"]
                            --[/COLOR]

                            Kommentar


                            • #15
                              Also ich meine:

                              Ich kann ein Objekt (unabhängig ob Singleton oder nicht) folgendermassen in eine Klasse "einbauen":

                              PHP-Code:
                              // egal ob singleton oder nicht
                              class DB{}

                              //2. klasse die die DB Klasse benutzt:

                              class user{
                              protected 
                              $db;


                              // 1. Möglichkeit=> egal ob über Construktor oder Setter
                              public function __constructor($db)
                              {
                              $this->db $db;
                              }

                              // 2. Möglichkeit: in diesem Fall schmafu, aber ab und zu macht es Sinn, eine Klasse in einer anderen zu instanzieren
                              public function __constructor
                              {
                              $this->db = new DB(foo,baz,bar);
                              // bzw für Singleton:
                              $this->db DB::getInstanz();
                              }

                              //3. Möglichkeit
                              public function __constructor()
                              {
                              $this->db Registry::get($db);

                              Und das alles(ausser 2.) hat doch nichts mit Singleton / nicht Singleton zu tun.

                              Kommentar

                              Lädt...
                              X