![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 0 Dołączył: 29.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
chciałbym wykorzystać wzorzec Singletona do połączenia się z bazą danych (MySQL) i do tego dołożyłem sobie PEAR' a, ale coś mi nie idzie. To co mam to są takie pliki: classa.Databases.php
Wiem, że brakuje obsługi błędów. test.php
I teraz tak. Po pierwsze czy dobrze myślę o wzorze Singletona (dobrze jest napisana klasa)? Po drugie czemu mi wywala błąd(Fatal error: Call to undefined function: MDB2_Driver_mysqli::numCol(). in pear/MDB2.php on line 1950)? To wygląda na błąd PEAR, ale jak robię normalnie bez mojej klasy to jest dobrze. Po trzecie, widziałem gdzieś jak koleś właśnie tworzył takie metody jak u mnie (fetchAll), ale czy przed tym nie powinno występować query()? Nie wiem co tu jeszcze może być źle |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 61 Dołączył: 20.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
PEAR MDB2 ma już wbudowany singleton http://pear.php.net/manual/en/package.data...tro-connect.php więc twoja klasa jest trochę bez sensu.
Twój singleton napisany jest w sumie dobrze. Nie zabezpiecza jedynie przed:
Dodaj do swojej klasy pustą funkcję: private function __clone() {} No i źle używasz fetchAll(). W tej bibliotece MDB2_Driver_Common::query() zwraca obiekt klasy MDB2_Result_Common, na którym dopiero można wykonać fetchAll(). |
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 09:57 |