![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 20.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Od razu powiem ze być może jest to gdzieś w sieci w sieci opisane, ale nie znalazłem więc piszę. Otóz mam klase rejestru. W głównym pliku wrzucam do niej instancję bazy danych. W klasie user pobieram tą klasę z rejestru. Dodając uzytkownika klasa user korzysta ze skopiowanej bazy danych. Zatem jak mogę w taki sposób otrzymać ilość wszystkich zapytań do bazy?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Kod wygląda przykładowo tak:
No i teraz w pliku głównym wyswietlam np ilosc wykonanych zapytan. Jak zrobić aby bazę pobierać i zmieniać jej oryginał(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ? Nie do końca rozumiem sposob uzywania rejestru wiec nie wiem jak go uzyc. Czytalem kilka art'ów o rejestrze ale wszędzie było tylko o jego roli i podstawowych funkcjach. Proszę o wyjaśnienie. Ten post edytował janusz.master 23.01.2008, 22:17:54 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 136 Pomógł: 22 Dołączył: 19.09.2007 Skąd: Sosnowiec Ostrzeżenie: (0%) ![]() ![]() |
No i teraz w pliku głównym wyswietlam np ilosc wykonanych zapytan. Jak zrobić aby bazę pobierać i zmieniać jej oryginał (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ? Nie bardzo rozumiem, co chcesz powiedzieć przez oryginał/kopia bazy. Domyślam się, że chodzi Ci o objekt klasy bazy danych, o jego instancje. Wg. przykładu który podałeś, wszystko jest w porządku. Obiekt tworzysz tylko raz (... = new database();) a dalej operujesz tylko na jego uchwytach. Rejestr służy do przechowywania takich instancji w klasie statycznej i sprawuje nad nimi pewną kontrolę. Nie ma znaczenia czy operujesz na Registry::get('db'); czy bezpośrednio na $db, bo obie wartości są uchwytami tego samego obiektu. Więc, jeśli na końcu pliku dasz przykładowo Registry::get('db')->QueryCount(); czy $db->QueryCount(); wyświetli tą samą wartość, uwzględniającą wszystkie użycia obiektu klasy database, niezależnie gdzie i kiedy były używane. Nie do końca rozumiem sposob uzywania rejestru wiec nie wiem jak go uzyc. Czytalem kilka art'ów o rejestrze ale wszędzie było tylko o jego roli i podstawowych funkcjach. Proszę o wyjaśnienie. Początkowo używanie rejestru może wydać sie niejasne, ale niewątpliwie ma wiele zalet (chociaż są opozycjoniści tego punktu widzenia). Przede wszystkim zapewnia pewną spójność, a nawet pokusiłbym sie o stwierdzenie: wygodę, pozwala sprawować pełną kontrolę na przepływem instancji czy operacje na nich. Podstawową funkcjonalnością jest możliwość dostępu do instancji danej klasy z dowolnego miejsca aplikacji (klasa statyczna) bez każdorazowego tworzenia nowych obiektów oraz bez użycia zmiennych globalnych (podoba funckjonalność). Tą funkcjonalność można rozszerzyć o wyżej wymienione rzeczy (kontrolę, operacje, wyjątki etc. - czego dusza zapragnie). Prosty, podstawowy sposób użycia: Zamiast używania zmiennych globalnych (przykład poniższy):
Użyjesz:
Pozostałych użyć opisywać nie będę, bo wychodzę z założenia że: "jeśli ich nie znasz to znaczy, że jeszcze ich nie potrzebowałeś". Przyjdzie samo z czasem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Pozdrawiam! Natt. Ten post edytował Nattfarinn 24.01.2008, 09:49:14 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Nie bardzo rozumiem, co chcesz powiedzieć przez oryginał/kopia bazy. Domyślam się, że chodzi Ci o objekt klasy bazy danych, o jego instancje. Wg. przykładu który podałeś, wszystko jest w porządku. Obiekt tworzysz tylko raz (... = new database();) a dalej operujesz tylko na jego uchwytach. Rejestr służy do przechowywania takich instancji w klasie statycznej i sprawuje nad nimi pewną kontrolę. Nie ma znaczenia czy operujesz na Registry::get('db'); czy bezpośrednio na $db, bo obie wartości są uchwytami tego samego obiektu. Więc, jeśli na końcu pliku dasz przykładowo Registry::get('db')->QueryCount(); czy $db->QueryCount(); wyświetli tą samą wartość, uwzględniającą wszystkie użycia obiektu klasy database, niezależnie gdzie i kiedy były używane. Tu masz rację, ale musisz zaznaczyć, że to ma miejsce dopiero od PHP5. (bo niestety niektórzy nie zaznaczają na której wersji pracują, że to nie jest 5.x [choć x też czasem jest bardzo ważny]) |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 20.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Ok dzieki za odpowiedź. Po prostu myślałem że w klasie pracuję na kopii obiektu a nie na oryginale. To był mój problem (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Czyli działa to podobnie jak wskaźniki np w C. W takim razie Pozdrawiam, temat do zamkniecia |
|
|
![]() ![]() |
![]() |
Aktualny czas: 18.09.2025 - 12:10 |