![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 43 Pomógł: 0 Dołączył: 21.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich bardzo serdecznie:)
Mam o to taki kod:
Chciałbym zrobić tak aby wywołanie połączenie z baza danych działało przez $db w klasie test, jak narazie działa mi to tylko poza klasą czy mógłby mi ktoś pomóc rozwiązać mój problem? Pozdrawiam z góry dzięki za odp:) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 43 Pomógł: 0 Dołączył: 21.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Tzn? gdzie zrobiłem błąd? Przepraszam że zadaje takie pytania ale dopiero zaczynam z OOP, byłbym wdzięczny gdyby mi ktoś dokładniej wytłumaczył co jest nie tak (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 43 Pomógł: 0 Dołączył: 21.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Aha, to ja do każdej metody muszę teraz dodawać $db = DB::pdo(); aby mi nawiązało połączenie z DB, nie da się tego jakoś "obejść" bo to chyba nie jest najbardziej optymalne rozwiązanie?
|
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Singleton w twoim wypadku nie nawiązuje za każdym razem połączenie tylko zwraca ci obiekt, które to połączenie nawiązało. Tak więc bez względu jak wiele wywołań DB::pdo dasz to i tak będzie wykorzystane i nawiązane jedno połączenie.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 43 Pomógł: 0 Dołączył: 21.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Tak, wiem dlatego zdecydowałem się zastosować singleton, czyli to rozwiązanie jest dobre?
|
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Nie singleton nie jest dobrym rozwiązaniem aczkolwiek bardzo wygodnym. Naj naj lepszym rozwiązaniem jest zastosowanie wzorca Context natomiast wygodniejszym i najczęściej stosowanym jest Registry albo Factory. Musisz o nich poczytać (materiałów jest sporo aczkolwiek nie mam pewności co do Contextu)
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat aczkolwiek bardzo wygodnym Jedynie pozornie, ponieważ korzystanie tego w taki sposób jak pokazany tutaj w postach sprawia, że można się pochlastać później (debuggowanie, modelowanie relacji pomiędzy obiektami).Cytat Naj naj lepszym rozwiązaniem jest zastosowanie wzorca Context To zabrzmiało jak jakaś prawda absolutna. (IMG:style_emoticons/default/winksmiley.jpg) Kontekst rzeczywiście byłby w tej sytuacji lepszym rozwiązaniem - ale czy najlepszym? Niekoniecznie - zależy od sytuacji.Tak się "czepiam" tylko (IMG:style_emoticons/default/winksmiley.jpg) Co do Singletona samego w sobie - chciałem zaznaczyć, że ideą tego wzorca jest zapewnienie tylko jednej (dwie lub więcej mogłyby zaszkodzić aplikacji - połączenie z bazą danych nie jest taką klasą) instancji danej klasy, a nie globalny dostęp do takowej. Co więcej tutaj Singleton jest źle zaimplemetowany - nadal można klonować obiekt. Ten post edytował Crozin 30.06.2010, 14:38:00 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 12:54 |