![]() |
![]() ![]() |
![]() |
![]() ![]()
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 ![]() |
Podstawy...
-------------------- |
|
|
![]()
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
![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Brakowało CI
Na początku twojej metody test() A problem wynika z zasięgu zmiennych. Metoda nie widzi zmiennych zdefiniowanych poza nią bądź nie będących właściwościami klasy w jakiej się znajduje. -------------------- |
|
|
![]()
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. ![]() Tak się "czepiam" tylko ![]() 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 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 16.07.2025 - 05:21 |