Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> zmienna globalna w klasie
sf
post
Post #1





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Przeglądając bibliotekę PEAR natknołem się na przykład,w którym wewnątrz klasy mamy zmienną globalną...

  1. <?php
  2. class MyPerson {
  3.  
  4. // gets an array of data about the seleted person
  5. function getPerson($id) {
  6. global $db;
  7. $result = $db->query(&#092;"SELECT * FROM person WHERE id=$id\");
  8. return $result->fetchRow();
  9. }
  10.  
  11. // example of checking a password.
  12. function checkPassword($username,$password) {
  13. global $db;
  14. $db->query(&#092;"SELECT username FROM person WHERE username='$username' AND password = '$password'\");
  15. return $result->fetchRow();
  16. }
  17.  
  18. }
  19. ?>


Tylko bardzo mnie ciekawi skąd takie podejście... Jeśli sobie stworzę dwa obiekty $db i $db2 to jak mam wykorzystać tą klasę do obiektu $db2? W C++ bym chyba to zrobił na wskaźnikach, a tak to nie wiem co mam zrobić... może $db3 = $db; $db = $db2? (o ile to jest poprawne :}).
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
scanner
post
Post #2





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Ale o co Ci chodzi? Bo ja chyba nie kumam...
Go to the top of the page
+Quote Post
sf
post
Post #3





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

Ostrzeżenie: (0%)
-----


No więc. Zapytam inaczej. Czy PEAR:(IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) B umożliwia dwa równoległe połączenia np. z mysql i postgresql? :} Bo z tego co widze w dokumentacji końcowej to wszystkie przykłady są w odniesieniu do jednego połączenia. Przykładem jest powyższa klasa, która jeśli stworzymy drugi obiekt o nazwie $db2 to nie będzie można się odwołać do tej klasy ponieważ ona korzysta z na stałe z obiektu $db. Więc by skorzystać z innego połączenia to musiałbym np. zamknąć pierwsze i uruchomić drugie o nazwie też $db. Inny przykład (DB::isError($res)), też nie wiadomo do które go miałoby się odwoływać ($db czy $db2) jeżeli stworzylibyśmy dwa (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
DeyV
post
Post #4





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




odpowiedź jest prosta - pozwala.
Ale jak ty to sobie obsłużysz - to już Twój problem.
Najlepiej jest po prostu nie korzystać z globali, tylko odpowiednio przekazywać obiekt bazy danych.
A co do metody statycznej - co prawda nie jestem pewien, do czego ona służy (wydaje mi się, ze akurat w tym przypadku nie będzie miała ona wpływu na konkretne połączenie) ale jeśli będziesz miał wątpliwości - po prostu skorzystaj z ADoDB które na pewno nie ma takich problemów.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.09.2025 - 23:57