Ich habe eine Menge über Dependency Injection, Inversion of Control und IoC-Container gelesen. Ich programmiere auch hauptsächlich in dynamischen Sprachen (PHP bei der Arbeit, Python zu Hause). Hier sind die Dinge, die ich finde, aber das lässt eine Menge Lücken für mich zu füllen, wie ich Stück es alle zusammen:
- Warum sind IOC-Container bei dynamischen Sprachen unnötig?
- Warum brauche ich einen IoC-Container im Gegensatz zu einfachem DI-Code?
- Vorteile eines IoC-Containers, die über eine einfache DI hinausgehen (Blogbeitrag)
Was ich also lese, ist: IoC-Container sind in statischen Sprachen eine viel größere Sache, weil es so viel einfacher ist, DI in dynamischen Sprachen durchzuführen. Aber sie bieten auch Vorteile, die weit über DI hinausgehen, wie z. B. die Verwaltung von Abhängigkeiten und die Ersparnis, ein Dutzend Objekte von Hand zusammenstellen zu müssen. Und, nebenbei bemerkt, sie sind kompliziert, also versuchen Sie nicht, sie selbst zu machen (aber es gibt keine guten für PHP).
Ich habe das Gefühl, dass diese Informationen mich irgendwie... feststecken lassen. Was soll ich damit machen? Ich arbeite in einer sehr großen Codebasis, mit sehr komplizierten Abhängigkeiten (und wahrscheinlich eine starke Notwendigkeit für Refactoring, aber das ist ein anderes paralleles Thema). Wir haben DI bisher sehr schlecht implementiert, und ich versuche wirklich, uns in die richtige Richtung zu lenken. Es scheint einfach nichts zu geben, was dynamische Sprachen und IoC (oder zumindest IoC-Container) betrifft.
Bin ich besser aus "Hand-stringing" Abhängigkeiten zusammen für die Zeit, und Sorgen über die Automatisierung in einem Container später, nachdem ich einen besseren Griff auf die Prinzipien? Lohnt es sich, meinen eigenen einfachen IoC-Container zu implementieren? Oder ist der Nutzen in PHP die Kosten letztlich nicht wert?