Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][OOP] Zagnieżdżanie obiektów
Forum PHP.pl > Forum > Przedszkole
sweter
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
Crozin
A tak ciężko sprawdzić? Nie. Spowoduje odpalenie globalnej funkcji getList().
julian.janus
Nie.

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


zrób tak:
  1. $this->znajomi = $znajomi->getList();
sweter
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
julian.janus
Uruchom kod to się dowiesz smile.gif Moim zdaniem powyższy kod będzie powodował rekurencję... w nieskończoność - albo w skończoność pamięci.
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.