Rejestr vs Singleton vs global, co jest lepsze |
Tematy na forum Pro mogą zakładać jedynie moderatorzy. W otwartych tematach może pisać każdy, kto ma coś fachowego do powiedzenia. Wszystkie posty nie wnoszące nic do tematu będą natychmiast usuwane, a ich autorzy dostaną ostrzeżenie.
Jeśli uważasz, że jakiś temat jest warty dyskusji na tym forum, zgłoś go w temacie Propozycje.
Rejestr vs Singleton vs global, co jest lepsze |
21.07.2007, 19:22:47
Post
#1
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 31.01.2007 Ostrzeżenie: (0%) |
Singleton to takie zmienne superglobalne, utrudniające dodatkowo podmianę pojedynczego komponentu systemu na inny. Jeżeli po prostu użyć zmiennych globalnych (albo nawet rejestru) można przypisać do danej zmiennej/pozycji instancję dowolnej klasy o dowolnej nazwie która ma po prostu określony API współpracujący z danym komponentem. Jeżeli jednak system używa Singletonu to nie jest to możliwe - konieczna jest albo modyfikacja danego komponentu albo utworzenie nowej klasy o nazwie takiej, jakiej rząda ten komponent.
Rejestr działa identycznie jak zmienne globalne, ale jest dużo mniej wygodny w obsłudze i na dodatek jest wolniejszy niż wbudowane w PHP zmienne globalne. Zmienne globalne też jakimś idealnym rozwiązaniem nie są, ale lepszego po prostu w PHP nie ma. Dlatego właśnie ich używam. @bim2 @BTW: tak Ten post edytował LEW21 21.07.2007, 19:23:39 -------------------- Przyjazne użytkownikom polskie wsparcie phpBB3 - phpBB3.PL
|
|
|
23.07.2007, 13:38:48
Post
#2
|
|
Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%) |
Hmm niedawno zaczalem pracowac w zespole gdzie poprzedni programisci doslownie wszystko robili na globalach.[ Teraz nawet jesli mialbytm liste na ktorej byloby powiedzmy tysiace globali myslisz ze sprawdzalbym takowa za kazdym razem gdy chce uzyc jakiejs zmiennej ?
Pozatym obecnie pracuje nad projektem ktory rozwijany jest juz od czterech lat (inna sprawa ze trzeba by go bylo poprostu przepisac) i widze w tym kodzie ktory uprzednio robilo n developerow setki globali wszedzie do wszystkiego. To jest niesamowicie trudne do wykrycia i ujarzmienia przy czym przez sprawdzanie co gdzie i jak zostalo zadeklarowane moja wydajnosc spada o jakies 80% Global jak eval zly i koniec. Singleton jest juz lepszy aczkolwiek zdaniem wielu ostatnio jest to poprostu global w obiektowej panierce. Registry wydaje sie najbardziej odpowiednim rozwiazaniem, chociazby dla tych samych argumentow ktore zostaly uprzednio wytoczone, mozna sledzic logowac debugowac o wiele wydajniej. I nie przemawia do mnie argument ze to debugowanie to mi jest potrzebne tylko w fazie dev. Co jesli klient sobie zarzyczy zmian ? Wtedy zaprzegam swoj zespol do wprowadzania tych zmian, jesli nie mieli by debuggowania juz jakos ogarnietego musieli by to robic jeszcze raz. A tak lekko i przyjemnie zmiana jednej flagi moga sobie wlaczyc i pomagac (ku uciesze naszej testerki ). Ogolnie uwazalem ze uzywanie globali umarlo wraz z php3, widac nie. Dowodow na to ze global zly jest duzo wystarczy tylko poszukac i poczytac. Gdyby byl fajny to tak ogromny procent spolecznosci nie narzekalby na niego. Dla mnie osobiscie (podejscie czysto pragmatyczne) argumenty za rozwiazaniami typu registry czy nawet singleton, i argumenty przeciw globalom sa oczywisne i jasne, jak najbardziej do mnie przemawiajace. Tyle -------------------- "Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"
|
|
|
Wersja Lo-Fi | Aktualny czas: 25.09.2024 - 02:55 |