pl: Trait oder Elternklasse in einer Klassen Gruppe?

Beitrag lesen

PS

Des Weiteren

    function param($name = ''){
        if(! isset($this->CGI) ){
            require "CGI.php";
            $this->CGI = new CGI();
        }
        return $this->CGI->param($name);
    }

auch ein typisches Beispiel für eine spätere Aggregation/late Delegation. Das CGI-Objekt wird erst eingebunden wenn die Methode param() aufgerufen wird. In Fakt beim ersten Aufruf dieser Funktion.

Eine solche Vorgehensweise wird auch Lazy Delegation genannt. Lazy weil die Aggregation (Instanz einer fremden Klasse als Eigenschaft der eigenen Klasseninstanz einbinden) später erfolgt also nicht als Injektion über den Konstruktor. Delegation weil die Methode der CGI-Instanz delegiert und damit zu einer eigenen Methode gemacht wird. D.h., die param()-Funktion die eine Methode der CGI-Instanz ist, wird so aufgerufen als wäre sie eine eigene Funktion.

Natürlich könnte man genau das auch per Vererbung erreichen, da erbt man jedoch sämtliche Methoden der Basisklasse.

Und natürlich kann man Lazy Delegation auch über Traits abwickeln. Man borgt sich sozusagen Methoden fremder Klassen (fremd heißt hier NICHT verwandt) und erstellt hierzu auch die entsprechenden Instanzen. Wie die Datenstrukturen im Inneren dieser Instanzen aussehen ist uninteressant, dafür gibt es eine API die man nutzt.

MFG

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