Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zastanawia mnie to w obiektach - newbie
Forum PHP.pl > Forum > PHP
SoulSeduction
Niedawno zaczałem zabawe z php (pare misięcy temu) również niedawno zetknąlem sie z programowaniem obiektowym smile.gif

dosyc ciekawe to wszystko,ale spro nie pojmuje

np. ma taki dylemat

stworzyłem klase do łączenia sie z baża danych itd

  1. <?php
  2.  
  3. class mysql 
  4. {
  5. var zmienna
  6. .
  7. .
  8. inne zmienne
  9. .
  10. .
  11.  
  12. function mysql()
  13. {
  14. $sql=mysql_connect('localhost','user','haslo') or die(&#092;"blad\");
  15.  
  16. mysql_select_db('baza') or die(&#092;"blad\");
  17.  
  18. $this->zmienna=$sql;
  19. }
  20.  
  21. }
  22.  
  23. ?>


załózmy,ze mam taką prosta klase z prostym konstruktorem - ten moment kodu mnie nabardziej zastanawia

co mnie ciekawi to to:

  1. <?php
  2.  
  3. $sql=new mysql();
  4. $xxx=$sql;
  5.  
  6. ?>


Pytanie brzmi:
Czy $xxx to jest nadal obiekt $sql?

a jeśli nie to czy wykonał drugie połączenie z baza czy może nadal wykorzystuje to pierwsze połączenie?

Pytam dlatego,ze np.
mam inkludowane pliki, w których chcialbym wykorzystać ten sam obiekiekt

wgłownym pliku uruchamiam
  1. <?php
  2.  
  3. include(&#092;"test.php\");
  4. $sql=new mysql();
  5.  
  6. $xxx=$sql;
  7.  
  8. test($xxx); 
  9.  
  10.  
  11. ?>



Jakpróbowalem w inkludowanym pliku podac cos takiego

  1. <?php
  2. $sql->query();
  3. ?>

to sie pluje o
  1. <?php
  2.  $sql=new mysql();
  3. ?>


A jak dodalem w głównym pliku php
  1. <?php
  2. $xxx = $sql;
  3. ?>
i potem w funckji
  1. <?php
  2. test($xxx); ## może tesż byc od razu $sql zamiast $xxx
  3. ?>


to w inkludowanym pliku bez problemu zrobiłem to co chciałem

  1. <?php
  2. function test($sql)
  3. {
  4. $sql->query(&#092;"jakies zapytanie\");
  5. }
  6. ?>



Z góry serdeczne dzięki.

I sorrki, jesli to gdzieś jest na forum ,a ja pisze o tym samym,ale nie moglem znleźć.
Isorry za to,ze nie napisałem tego na forum php dlapoczątkujacych - wybaczcie pisałem to nad ranem po nieprzespanej nocy smile.gif
Ociu
ale... po co przyrównujesz zmienną zmienną xxx do obiektu $sql ? szkoda czasu i pamięci na to...
SoulSeduction
to jaby to można rozwiązać?
tiraeth
Funkcja:
  1. <?php
  2. function test()
  3. {
  4.  global $sql;
  5.  $sql->query(&#092;"jakies zapytanie\");
  6. }
  7. ?>


Wywołanie:
  1. <?php
  2. $sql = new mysql();
  3.  
  4. test();
  5. ?>

Wystarczy ustawić $sql jako zmienną globalną w funkcji smile.gif
crash
Możesz też przekazać do takiej funkcji zmienną i (PHP5) przy okazji określić, że zmienna ta musi być obiektem odpowiednim:
  1. <?php
  2. class Test
  3. {
  4.  public $val = 'wartosc';
  5. }
  6.  
  7. function proba( Test $zmienna )
  8. {
  9.  return $zmienna->val;
  10. }
  11.  
  12. $t = new Test;
  13.  
  14. echo proba( $t );
  15. ?>

A co do tego przypisywania obiektu do zmiennej (nie zczaiłem mimo dużego wysiłku co chciałeś osiągnąć) to jeśli już coś takiego chcesz zrobić to użyj operatora clone...
SoulSeduction
oooo dzięki chłopaki smile.gif

teraz widze ze ja robilem kopie obiektu, a kopia (niejestem pewien) chyba wykonywala drugie nowe polącznie z bazą.

Ehhh.... sporo nauki mnie czeka smile.gif

Jeszcze raz serdeczne dzięki.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.