Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][OOP] Zagnieżdżanie obiektów
sweter
post
Post #1





Grupa: Zarejestrowani
Postów: 623
Pomógł: 11
Dołączył: 1.01.2009
Skąd: Wrocław

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


Witam,
mam takie pytanko odnośnie takiego kodu:
  1. class Uzytkownik{
  2. public $znajomi
  3. public function __construct($id_uzyt){
  4. $znajomi = new Znajomi();
  5. $this->znajomi = getList();
  6. }
  7. }
  8.  
  9. class Znajomi{
  10. ...
  11. public function getList(){
  12. // łączy się z bazą danych i
  13. // zwraca tablicę wypełnioną obiektami klasy Uzytkownik
  14. $tab[0] = new Uzytkownik(2);
  15. $tab[1] = new Uzytkownik(3)
  16. }
  17. ...
  18. }
  19.  
  20. $uzytkownik = new Uzytkownik(1);

Czy wywołanie powyższego kodu (proszę zwrócić uwagę, że nie odnoszę się do pola $uzytkownik->znajomi) uruchomi działanie funkcji getList() z klasy Znajomi?
Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


A tak ciężko sprawdzić? Nie. Spowoduje odpalenie globalnej funkcji getList().
Go to the top of the page
+Quote Post
julian.janus
post
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 1
Dołączył: 24.02.2011

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


Nie.

Zamiast
  1. $this->znajomi = getList();


zrób tak:
  1. $this->znajomi = $znajomi->getList();
Go to the top of the page
+Quote Post
sweter
post
Post #4





Grupa: Zarejestrowani
Postów: 623
Pomógł: 11
Dołączył: 1.01.2009
Skąd: Wrocław

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


Oj, pomyliłem się w kodzie.
Oczywiście, że chodziło mi o tą wersję jaką zaproponował @julian.janus:
  1. class Uzytkownik{
  2. public $znajomi
  3. public function __construct($id_uzyt){
  4. $znajomi = new Znajomi();
  5. $this->znajomi = $znajomi->getList();
  6. }
  7. }
  8.  
  9. class Znajomi{
  10. ...
  11. public function getList(){
  12. // łączy się z bazą danych i
  13. // zwraca tablicę wypełnioną obiektami klasy Uzytkownik
  14. $tab[0] = new Uzytkownik(2);
  15. $tab[1] = new Uzytkownik(3)
  16. }
  17. ...
  18. }
  19.  
  20. $uzytkownik = new Uzytkownik(1);

Głównie chodzi mi o to, czy NIE odwołując się do pola $uzytkownik->znajomi NIE uruchomię rekurencji.
Pozdrawiam
Go to the top of the page
+Quote Post
julian.janus
post
Post #5





Grupa: Zarejestrowani
Postów: 10
Pomógł: 1
Dołączył: 24.02.2011

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


Uruchom kod to się dowiesz (IMG:style_emoticons/default/smile.gif) Moim zdaniem powyższy kod będzie powodował rekurencję... w nieskończoność - albo w skończoność pamięci.
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: 23.08.2025 - 15:51