Rolf B: Trait oder Elternklasse in einer Klassen Gruppe?

Beitrag lesen

Hallo pl,

Es kommt immer darauf an, das Wesentliche zu erkennen.

was in diesem Fall ist: Du faselst.

Was Du zeigst, ist keine Alternative zu DI, sondern die in grellen Farben gezeichnete Darstellung des Problems, das DI lösen will: Festgebackene Abhängigkeiten, die Unit-Tests verhindern und Flexibilität nehmen. In deinem Fall ist es ein Zwieback: außer zur CGI Klasse gibt's auch noch die Abhängigkeit zum Sourcefile, d.h. das Unterschieben einer CGI-Klasse aus CGI_Emulator.php ist auch nicht mehr möglich.

Eigentlich ist es in deinem FW ja eine großartige Idee, die HTTP Request/Response Themen auszulagern. So kann man die Controllerklasse über automatisierte Tests laufen lassen und das CGI Umfeld simulieren. Aber genau dafür muss man das CGI Objekt injizieren können. Da ein Controller es vermutlich in 99% aller Fälle brauchen wird, dürfte es wenig sinnvoll sein, dieses Objekt so wie oben gezeigt lazy zu beschaffen. Das Beschaffen der CGI Instanz gehört in den Konstruktor. Man KANN es so bauen, dass eine fehlende CGI Injektion bewirkt, dass der Controller sich das CGI Objekt aus einer Default-Implementation holt. Aber niemals nicht so wie in deiner Methode. Die ist ein perfektes Beispiel für ignoriertes SRP.

Rolf

--
sumpsi - posui - clusi
0 61

Trait oder Elternklasse in einer Klassen Gruppe?

MB
  • php
  • programmiertechnik
  • projektverwaltung
  1. -2
    pl
    1. 0
      Gunnar Bittersmann
      • programmiertechnik
      1. -1
        pl
        1. 2
          Tabellenkalk
        2. 3
          Christian Kruse
          1. 0
            Rolf B
            1. 0

              Grundlegende Lernstrategien

              Der Martin
              • sonstiges
              1. 0
                Gunnar Bittersmann
        3. 1
          Felix Riesterer
    2. 1
      Tabellenkalk
    3. 1
      Felix Riesterer
    4. 0
      MB
      1. -1
        pl
        1. 0
          MB
          1. 1
            Felix Riesterer
            1. 0
              MB
              1. 1
                Tabellenkalk
                1. 0
                  MB
              2. 1

                Plural-s und Schriftformatierung

                Der Martin
                • markdown
                • sprache
                1. 0
                  MB
                  1. 0
                    Tabellenkalk
                    1. 0
                      MB
                      1. 3
                        Der Martin
                        1. 0
                          MB
                          • markdown
                  2. 0
                    Matthias Apsel
                    1. 0
                      Der Martin
                  3. 0
                    Der Martin
                    1. 0
                      MB
                2. 0
                  Der Martin
                  1. 0
                    Matthias Apsel
                    1. 0
                      Tabellenkalk
          2. -3
            pl
            1. 0
              Christian Kruse
            2. 0
              pl
              1. 0
                pl
              2. 2
                MB
                1. 0
                  pl
            3. 0
              Rolf B
            4. 1
              MB
              1. -3
                pl
                1. 1
                  MB
                  1. 0
                    Gunnar Bittersmann
                  2. 0
                    MB
                    • meinung
                    1. -1
                      pl
                      1. 0
                        MB
                      2. 0
                        Rolf B
          3. 0
            pl
            1. 1
              Mitleser
            2. 0
              MB
              1. -1
                pl
                1. 0
                  MB
    5. 0
      MB
      1. -3
        pl
        1. 0
          Rolf B
  2. 0
    pl
    1. 0
      MB
  3. 1
    dedlfix
    1. 0
      MB
  4. 0

    Dependency Injection, Vorsicht Falle

    pl
    1. 1
      dedlfix