Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zastanawia mnie to w obiektach - newbie
SoulSeduction
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 16.07.2005

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


Niedawno zaczałem zabawe z php (pare misięcy temu) również niedawno zetknąlem sie z programowaniem obiektowym (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował SoulSeduction 16.07.2005, 04:50:02
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Ociu
post
Post #2





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




ale... po co przyrównujesz zmienną zmienną xxx do obiektu $sql ? szkoda czasu i pamięci na to...
Go to the top of the page
+Quote Post
SoulSeduction
post
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 16.07.2005

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


to jaby to można rozwiązać?
Go to the top of the page
+Quote Post
tiraeth
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
crash
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


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...
Go to the top of the page
+Quote Post
SoulSeduction
post
Post #6





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 16.07.2005

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


oooo dzięki chłopaki (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Jeszcze raz serdeczne dzięki.
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.08.2025 - 19:32