![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 108 Pomógł: 0 Dołączył: 7.05.2004 Skąd: Jelenia Góra Ostrzeżenie: (0%) ![]() ![]() |
Witam,
postaram się jak najlepieej opisać problem. Aplikacja opiera się o programowanie obiektowe. Mam napisany sterownik bazy danych m.in. zawierający obliczanie ilości wykonanych zapytań do bazy. Oprócz tej klasy istnieje klasa obsługująca użytkownika - zalogowanego, bądź nie. Problem wydaje się banalny, ale nie dla mnie. Chciałbym aby sterownik obsługujący np. obliczanie ilości zapytań potrzebnych do wyświetlenia newsów na stronie (taki przykład) był również wykorzystywany w tej samej formie (ten sam identyfikator) do obliczania ilości zapytań podczas obsługi użytkownika, aby ilość zapytań była dodawana. Tj. na początku skryptu znajduje się kod: $sql = new Mysql( [parametry] ); Aby użyć klasy bazy danych w klasie np. User musiałem tworzyć nowy identyfikator, albo zastąpić już istniejący. Aby temu zapobiec wykorzystywałem do tego konstrukcję global, ale już wiem, że to nie jest poprawne. Jest na to jakieś rozwiązanie? Pozdrawiam. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 698 Pomógł: 3 Dołączył: 28.03.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
To nie tak działa. Po pierwsze instancję trzymamy w prywatnej statycznej zmiennej klasy, a nie funkcji. Po drugie, instancji nigdy się nie tworzy operatorem new, bo konstruktor ma być chroniony/prywatny. Zawsze należy użyć funkcji getInstance, która ma dostęp do konstruktora z wewnątrz obiektu. Konstruktor w przypadku klasy bazy danych jest niewygodny, bo obiekty są konstruowane na podstawie kilku argumentów.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 15:02 |