• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dependency Injection i IoC kilka pytań

Object Storage Arubacloud
0 głosów
437 wizyt
pytanie zadane 17 lutego 2021 w Algorytmy przez CSSoup Mądrala (6,460 p.)
Ostatnio zacząłem ogarniać temat DI oraz kontenerów i pojawiło się w mojej głowie kilka pytań.

1. Załóżmy, że mam projekt napisany w PHP w oparciu o MVC i wiadomo że różne obiekty składają się z innych itd. W takim razie tworząc kontener IoC, powinienem stworzyć jeden kontener w pliku index.php w który zarejestruje wszystkie zależności i będę go używał globalnie, czy powinienem to rozbić w jakiś sposób?

2. Co w przypadku gdy mając łańcuch zależności, czyli do jednej zależności wstrzykuję inną itd. i w pewnym momencie napotykam zależność, do której podaje parametry zależne od pewnych działań wykonywanych w aplikacji np. zmiana aktualnej strony w obiekcie Paginator. W takim wypadku powinienem jakoś zmodyfikować mój kontener, czy może wstrzykiwać dany obiekt w jakiś inny sposób?

1 odpowiedź

+1 głos
odpowiedź 17 lutego 2021 przez Wiciorny Ekspert (269,710 p.)
wybrane 17 lutego 2021 przez CSSoup
 
Najlepsza

 tworząc kontener IoC,

Ty nie tworzysz kontenera IoC programistycznie, tylko możesz nadać tę właściwość IoC to odwrócenie kontroli, czyli na dany kontener wpyw ma FRAMEWORK, i to ty określasz czy ten framework ma miec wpływ na ten kontener poprzez np adnotacje, czy stosowanie go w projekcie. 
Mozesz tez utworzyc wlasne klasy konfiguracyjne i wtedy niejako ty tworzysz konfiguracje, ale poprzez "meta-dane" adnotacje musisz to wykorzystać, to nie polega na tym, że tworzysz sam obiekty i nadajesz im właściwości własnie to daje nam IOC czyli odwrócenie sterowania aplikacją od programisty na rzecz frameworku  
 

powinienem stworzyć jeden kontener w pliku index.php w który zarejestruje wszystkie zależności i będę go używał globalnie, czy powinienem to rozbić w jakiś sposób?

Nie jest to wymagane, to zależy od twojej architektóry, moim zdaniem nawet pakowanie konfiguracji do 1 pliku to nie bardzo, chyba żeby do 1 pakietu, gdzie osobno mamy konfiguracje np - warstwy Controlerów, bazy, etc. 
Natomiast ładowanie konfiguracji można zawszeć w 1 pliku 

 

parametry zależne od pewnych działań wykonywanych w aplikacji np

oznacza to że coś w twojej aplikacji jest nie tak, skoro do prawidłowego działania komponentu potrzebujesz ZMIANY STANU, gdzie generalnie bazowe klasy powinny byc bez stanowe i niezależne od "klas zewnętrznych" 
Cięzko odpowiedzieć czy powinieneś modyfikować kontener, powinieneś rozważyć przypadek np. LAZY LOADING, albo ... WZORCA PROXY, który - zadziała w pewien sposób na oczekiwanie ? Trudno powiedzieć nie znając samej aplikacji, mozliwości rozwiązania jest wiele, można wstrzykiwać dany obiekt też zależnie tylko OD PEWNYCH ZDEFYINIOWANYCH "zachowań"  

1
komentarz 17 lutego 2021 przez CSSoup Mądrala (6,460 p.)
Ok, dzięki za przydatne info ;)

Podobne pytania

0 głosów
2 odpowiedzi 458 wizyt
pytanie zadane 13 września 2016 w PHP przez deimos Nowicjusz (120 p.)
0 głosów
1 odpowiedź 212 wizyt
pytanie zadane 10 maja 2020 w PHP przez XiverKi Bywalec (2,050 p.)
0 głosów
1 odpowiedź 271 wizyt
pytanie zadane 24 czerwca 2017 w PHP przez Marduczek Użytkownik (520 p.)

92,556 zapytań

141,404 odpowiedzi

319,562 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...