Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zamiast global
Forum PHP.pl > Forum > PHP
Kirtan Loor
Witam,

Mam takie pytanie: Jak nie uzywajac
  1. <?php
  2. global $db
  3. ?>

zmusic jedna klase (w tym wypadku klase session handlera) do laczenia sie z baza danych za pomoca klasy bazodanowej?
nospor
No chociazby przy uzyciu wzorca singleton. Tu cos pisali:
Temat: php GLOBALSand39varand39 a global var roznice
batman
Ze wzorcem singelton należy uważać w przypadku klasy łączącej się z bazą danych. Jak wiadomo wzorzec ten zakłada, że można utworzyć tylko jeden obiekt na podstawie danej klasy, więc jeśli używasz kilku baz danych możesz mieć problem. Ale jeśli nie używasz i w przyszłości nie planujesz używać więcej niż jednej bazy, wówczas ten wzorzec pasuje jak ulał do Twojego problemu.
nospor
Cytat
Ale jeśli nie używasz i w przyszłości nie planujesz używać więcej niż jednej bazy,

@batman ale ty mowisz o uzywaniu kilka baz naraz? W tym samym czasie przez jedną aplikacje? Nawet jesli tak, no to przecież mozna pobierac obiekty dla kazdej bazy oddzielnie.
Ja przykladowo zrobilem sobie klase Factory, która zwraca mi na zasadzie singletonu dany obiekt jaki ona trzyma. Tak wiec moge w niej miec kilka obiektów baz i kazdy moze dotyczyc innej bazy
batman
Skoro łączysz się z kilkoma bazami danych, tworzysz kilka obiektów do obsługi różnych baz, a to kłóci się z założeniami wzorca singelton. Wspomniałeś o klasie Faktory, a to już inna para klaoszy winksmiley.jpg W opisany sposób można podłaczyć się z wieloma bazami.
A co do używania kilku baz. Tak używam kilku baz w jednej aplikacji. Jedna baza zawiera info o kliencie, produktach, itp. Druga natomiast info o zamówieniach. Architektura ta jest zbudowana w taki sposób, ponieważ baza do zamówień zbiera informacje z kilku systemów i jest obsługiwana przez skrypty chodzące w cronie.
nospor
Cytat
Skoro łączysz się z kilkoma bazami danych, tworzysz kilka obiektów do obsługi różnych baz, a to kłóci się z założeniami wzorca singelton.
Hmmm, no wlasnie, tworze obiekty do obslugi roznych baz, czyli de fakto to rózne obiekty winksmiley.jpg Ale do obslugi danej bazy ja zawsze dostane ten sam obiekt, bez tworzenia innych.

Cytat
Wspomniałeś o klasie Faktory, a to już inna para klaoszy
No nie wiem. Factory mi zwraca obiekty wlasnie na podstawie wzorca singleton. Dany obiekt zwroci mi tylko raz.

edit: co do Factory to chyba cie nie zrozumialem. znaczy teraz wydaje mi sie, iż myslimy podobnie smile.gif czyli faktycznie singleton w danej klasie dawalby nam tylko jeden obiekt danej klasy, ale juz Factory moze dawac na kilka obiektów danej klasy (przyklad wlasnei tych roznych baz). przy czym nie będzie powielania tych samych obiektow: do bazy xxx dostane zawsze ten sam obiekt, do bazy yyy zawsze dostane inny ten sam obiekt itd.
batman
Muszę przyznać, że masz rację co do fabryki. Można zrobić by dla każdej bazy zwracany był inny obiekt. W każdym bądź razie singleton nadaje się do zastąpienia global.
Kirtan Loor
Ok, juz mam i chyba rozumiem;-)
Dzieki bardzo.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.