Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Obiekt w obiekcie
Forum PHP.pl > Forum > PHP > Object-oriented programming
Bastion
Witam,

Przypuscmy ze mam klase :

  1. <?php
  2. class klasa
  3. {
  4. private $var = null;
  5.  
  6. public function pobierz()
  7. {
  8. return $this->var;
  9. }
  10.  
  11. public function funkcja_a()
  12. {
  13. $this>var = 'bleble';
  14. }
  15.  
  16. public function funkcja_b()
  17. {
  18. $b = new klasa;
  19. print $b->pobierz();
  20. }
  21. }
  22.  
  23. $a = new klasa;
  24. $a -> funkcja_a();
  25. $a -> funkcja_b();
  26.  
  27. ?>


I chce aby podklasa $b wyswietla zmienna "var" klasy rodzica, myslalem
aby zrobic cos takiego aby w funkcja_ wygladala tak :

  1. <?php
  2. public function funkcja_b()
  3. {
  4. $b = new klasa;
  5. $b->var = $this->var;
  6. print $b->pobierz();
  7. }
  8.  
  9. ?>

ustawiajac przy tym by var bylo publiczne, mysle jednak ze jest jakis inny sposob
o ktorym nie wiem...
dr_bonzo
Rodzic a drugi obiekt tej samej klasy to cos zupelnie innego, jak chcesz miec zmienna dostepna we wszystkich obiektach klasy to:

  1. <?php
  2. class klasa
  3. {
  4.     static private $var = null;
  5.  
  6. ...
  7.  
  8. self::$var = ....
  9.  
  10. ?>



----------
edit:

mozna tez tak
  1. <?php
  2.  
  3. class Klasa
  4. {
  5. private $value = NULL;
  6.  
  7. public function __construct( $value = NULL )
  8. {
  9. $this->$value = $value;
  10. }
  11.  
  12. public function getValue()
  13. {
  14. return $this->value;
  15. }
  16.  
  17. public function createChild()
  18. {
  19. return new Klasa( $this->getValue() );
  20. }
  21. }
  22. ?>


ale watosci $value nie beda zsynchronizowane -- jej zmiana w jednym z obiekcie nie wplynie na jej wartosc w pozostalych obiektach.
Bastion
o to chodzilo smile.gif wielkie dzieki!
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.