Ankündigung

Einklappen
Keine Ankündigung bisher.

Dependency injection Container

Einklappen

Neue Werbung 2019

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

  • Dependency injection Container

    Hallo zusammen,
    brauche ich wieder Ihre Hilfe. Es geht um "Dependency injection Container". Ich verstehe nicht wie es machen soll. Ich habe z.B. 3 Klassen:

    PHP-Code:
    class BeatlesCd{

        protected 
    $Beatles;
        
        function 
    __construct(){
            
    $this->Beatles="Beatles";
        }
        
        public function 
    player(){
            return 
    $this->Beatles;
        }
    }

    class 
    Abba{

        protected 
    $Abba;

        function 
    __construct(){
            
    $this->Abba="Abba";
        }

        public function 
    player(){
            return 
    $this->Abba;
        }
    }

    class 
    MusicPlayer{

        protected 
    $cd;

        function 
    __construct(){}
        
        public function 
    setCd($cd) {
            
    $this->cd $cd;
        }

        public function 
    choose(){
            echo 
    "Now playing: ".$this->cd->player();
        }
    }
    $beatlesCd = new BeatlesCd();
    $AbbaCd = new Abba();
    $MusicPlayer = new MusicPlayer();

    $MusicPlayer->setCd($beatlesCd);
    $MusicPlayer->choose(); 

    $MusicPlayer->setCd($AbbaCd);
    $MusicPlayer->choose(); 
    MusicPlayer Klasse sollte CDs abspielen. Jeder CD hat seine eigene Klasse. Wie Teory sagt ein DI Container soll alle Dependencies in sich tragen. Und alle nötige Initialisierungen (und Injectinos) machen. Ich will wissen wie wird diese Container aussehen in diesem Fall.
    mfg tigran82

  • #2
    Da fängst du schonmal ziemlich schlecht an. Wozu hast du 'ne CD-Klasse für alle Artisten? Was passiert denn, wenn ein junges Talent wie Jusin Bieber rauskommt? Erstellst du dann 'ne neue Klasse dafür?
    Eine CD-Klasse, die dynamisch gefüllt wird, ist da der bessere Weg.

    Ein Nutze für Dependency Injection ist hier noch nicht sichtbar. Du solltest erst den Sinn von OOP verstehen, bevor du dich mit solchen Konzepten rumschlägst

    Kommentar


    • #3
      ein junges Talent wie Justin Bieber
      Diese Aussage ist garantiert falsch...

      Kommentar


      • #4
        @ Asterixus

        Du machst mir Angst, wie kommst du ausgerechnet auf Justin bieber?

        Ansonsten wurde alles gesagt, Wine cd ist ein datensatz der sich auf mehrere tabellen in der db aufteilt (ich gehe davon aus das eine db benutzt wird). Dann existiert Wine klasse artist und und entweder ist dann jeder datensatz ein artist objekt oder aber das arist objekt bekommt alle datensätzte als array.

        Kommentar


        • #5
          Danke Asterixus,
          das hier ist nur ein Beispiel. Ist kein "Real" Code. Ich will nur wissen wie der Container ausseht.
          mfg

          Kommentar


          • #6
            Sorry, bitte löschen, mein Internet war down.

            Kommentar


            • #7
              Die [ironie]-Tags habe ich wohl vergessen

              Ob Realcode oder nicht; hättest du OOP-Verständnis, hättest du dieses Beispiel nicht gegeben.


              http://fabien.potencier.org/article/...ency-injection

              Kommentar


              • #8
                Zitat von Asterixus Beitrag anzeigen
                Die [ironie]-Tags habe ich wohl vergessen

                Ob Realcode oder nicht; hättest du OOP-Verständnis, hättest du dieses Beispiel nicht gegeben.


                http://fabien.potencier.org/article/...ency-injection
                Den Artikel hab ich gelesen. Es geht um Dependency injection allein, nicht um Container. Meine Frage bleibt bestehen.

                Kommentar


                • #9
                  Langsam fängst du an, mich zu nerven. Lerne erst, was OOP ist, dann kannst du fragen.
                  http://fabien.potencier.org/article/...tion-container

                  Das ist die Fortsetzung davon.

                  Kommentar


                  • #10
                    Zitat von tigran82 Beitrag anzeigen
                    Den Artikel hab ich gelesen. Es geht um Dependency injection allein, nicht um Container. Meine Frage bleibt bestehen.
                    In deinem Fall macht ein DIC noch garkeinen Sinn, da du sowieso immer nur eine Abhängigkeit (ein CD-Objekt) hast. Angenommen dein CD-Player kann mehrere CDs abspielen, dann könntest du einen container bauen, der die CDs in den Player "injiziert".

                    Kommentar


                    • #11
                      Zitat von alxy Beitrag anzeigen
                      In deinem Fall macht ein DIC noch garkeinen Sinn, da du sowieso immer nur eine Abhängigkeit (ein CD-Objekt) hast. Angenommen dein CD-Player kann mehrere CDs abspielen, dann könntest du einen container bauen, der die CDs in den Player "injiziert".
                      Ok danke alxy,
                      vielleicht soll ich meine Frage anderes formulieren. Wann macht es sinn ein DI Container zu erstellen? Und wie genau seht den Code aus? Ein kleines Beispiel wäre ziemlich nett.
                      mfg

                      Kommentar


                      • #12
                        Der von Asterixus gepostete Artikel beantwortet doch genau diese frage...

                        http://fabien.potencier.org/article/...tion-container

                        Kommentar


                        • #13
                          Zitat von Asterixus Beitrag anzeigen
                          Langsam fängst du an, mich zu nerven. Lerne erst, was OOP ist, dann kannst du fragen.
                          http://fabien.potencier.org/article/...tion-container

                          Das ist die Fortsetzung davon.
                          Ups,
                          hab ich es nicht gesehen. Sorry. Werde ich gleich schauen.
                          mfg

                          Kommentar

                          Lädt...
                          X