Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 95 Pomógł: 7 Dołączył: 16.07.2007 Skąd: Gorzów Wielkopolski Ostrzeżenie: (0%)
|
Ostatnio zainteresowałem się tym artykułem: http://phpgeek.pl/112/dependency-injection-container/ Ciekawi mnie jedna kwestia, czy instancję Containera przekazywać gdzieś dalej do obiektów i do obiektów w obiektach przez parametr, czy skorzystać z tego, że tablica jest zmienną statyczną i w kolejnych "zagnieżdżeniach" obiektów tworzyć nowy obiekt Containera? Bo jeśli przez parametr to można wywalić zmienną statyczną (większa śladowa wydajność, większy bałagan w parametrach) a jeśli tworzyć nowy obiekt to niby nam ta wydajność spada, bo i zmienna statyczna i do tego kolejne obiekty... np 3 obiekty przy jednym żądaniu. Chociaż nie wiem jak się ma to do zmiennych statycznych, to podobno stosowanie metod statycznych (w większej dawce) odbywa się kosztem spadku wydajności. Co Wy o tym wszystkim myślicie?
|
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
Przecież jeżeli utworzysz nową instancję to skąd wytrzaśniesz w niej referencje do różnego rodzaju usług? Może zagłębmy się w definicję słów Inversion of Controler = Odwrócenie sterowania. Nie polega to jedyna na ukryciu zależności ale też m.in odciążenie innych klas od tworzenia i dorzucania do kontenera pojedynczych obiektów. Dodatkowo, żeby aplikacja była "hermetyczna" obiekt kontenera NIE MOŻE być globalny, statyczny ale LOKALNY. Czyli, przekazywać go tam gdzie potrzeba. Co nam to daje? Nie tworzymy, np połączenia z bazą danych kiedy jest ono kompletnie niepotrzebne, masy obiektów których nie użyjemy. Samo wykorzystanie DIC jest bardzo elastyczne i wygodne aczkolwiek wydajność... to już inna kwestia. Parsowanie xml-a, badania zależności, badanie koniecznych parametrów do przekazania trochę czasu zajmuje. U siebie zrezygnowałem z xml-a i zależności wstrzykuje "ręcznie" w kontenerze. W statycznej zmiennej trzymam tablicę z instancjami klas. Myślę, że to najbardziej kompromisowe rozwiązanie, bo global odpada i nie ma co o to pytać nawet, przekazywania miliona parametrów też odpada. Czyli po prostu inaczej ubrałeś słówko "global". Każdy obiekt statyczny, singleton jest po prostu bezpieczniejsza forma globala także nie tędy droga. Oczywiście wszystko zależy od gustu i upodobań. Ten post edytował wookieb 12.09.2010, 10:49:48 |
|
|
|
Luneth Dependency Injection Container 17.08.2010, 19:50:56
Crozin Wydajność nie ma tu większego znaczenia - chodzi b... 17.08.2010, 19:54:17
Luneth W tym poście chodzi mi o to, aby głównie się skupi... 17.08.2010, 19:59:50
smentek A My o tym wszystkim myślimy, że z całą pewnością ... 8.09.2010, 20:50:04
Crozin @smentek: To Tobie radziłbym poczytać o tym wzorcu... 8.09.2010, 21:28:18
smentek Cytat(Crozin @ 8.09.2010, 22:28:18 ) ... 8.09.2010, 21:48:17
Crozin CytatNie zaproponowałem jednak niczego poza tym że... 8.09.2010, 23:36:42
smentek Ale dlaczego uważasz że kontener miał by mieć zasi... 8.09.2010, 23:51:32
Crozin Bo skoro nie lokalny (i bezpośrednio przekazywany ... 9.09.2010, 06:43:21
smentek Ok przyznaję, że daleko mi do eksperta jeżeli chod... 9.09.2010, 07:10:51
dariuszp Wzorzec jak wzorzec. Jak dla mnie to po prostu cie... 9.09.2010, 09:50:09
smentek CytatJak dla mnie to po prostu ciekawe zastosowani... 10.09.2010, 04:55:15
Crozin Tak, źle zrozumiałeś. Napisałem, że robienie z Sin... 10.09.2010, 06:33:03
Luneth Ja swój problem rozwiązałem tak: Container przecho... 12.09.2010, 10:23:40
Luneth Okej, to mogę wywalić zmienną statyczną i wszędzie... 12.09.2010, 11:50:15
wookieb Właściwości statyczne przydają się w miejscach gdz... 12.09.2010, 12:05:26
Luneth Nie zrobiłem klasy statycznej, jedynie atrybut prz... 12.09.2010, 12:58:34
Crozin CytatNie zrobiłem klasy statycznejTak, wiemy - bo ... 12.09.2010, 13:58:25
Luneth Owszem, mam coś na tej zasadzie. Nie tworzę za każ... 12.09.2010, 14:04:58 ![]() ![]() |
|
Aktualny czas: 10.06.2026 - 13:31 |