Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Obiekty i klasy - odwolywanie sie do rodzica
Forum PHP.pl > Forum > PHP
LukenZi
witam!

Mam 3 klasy:

glowna.php
  1. class glowna
  2. {
  3. public $dziecko1,$dziecko2;
  4. public function __construct()
  5. {
  6. require_once "dziecko1.php";
  7. require_once "dziecko2.php";
  8. $dziecko1 = new dziecko1;
  9. $dziecko2 = new dziecko2;
  10. }
  11.  
  12. }

dziecko1.php
  1. class dziecko1 extends glowna
  2. {
  3.  
  4. public function funkcja1()
  5. {
  6.  
  7. echo("Klasa: dziecko1<br />\r\n");
  8. $this->dziecko2->funkcja2();
  9. }
  10.  
  11.  
  12. }

dziecko2.php
  1. class dziecko2 extends glowna
  2. {
  3.  
  4. public function funkcja2()
  5. {
  6.  
  7. echo("Klasa: dziecko2<br />\r\n");
  8. $this->dziecko1->funkcja1();
  9. }
  10.  
  11.  
  12. }



Taki przyklad smile.gif

Chcialbym sie odnosci z klasy dziecko1 do funkcji w dziecko2, laczac je przez klase glowna (ktora oczywiscie zawiera wiecej funkcji poza __construct winksmiley.jpg )

Czy takie podejscie laczenia klas jest poprawne i co powinienem zrobic, aby odwolac sie klasy dziecka do drugiej klasy dziecka poprzez rodzica ?

Powyzszy przyklad nie dziala, moge jedynie przez $this->odwolac sie do funkcji w glowna.php, lub w zaleznosci od klasy do funkcji w niej zawartych.

Pozdrawiam,
Łukasz
Grand93
Odwołania pomiędzy klasami dokonuje się przez metody statyczne ( static public function )
Dzieci nie mogą się porozumiewać przez rodzica, ale mogą się porozumiewać w taki sposób:
--główna klasa
|__dziecko
....|__dziecko dziecka smile.gif
phpion
Możesz do obiektu dziecka przypisać obiekt rodzica, czyli:
  1. class glowna
  2. {
  3. public $dziecko1,$dziecko2;
  4. public function __construct()
  5. {
  6. require_once "dziecko1.php";
  7. require_once "dziecko2.php";
  8. $this->dziecko1 = new dziecko1; // zapomniałeś $this
  9. $this->dziecko2 = new dziecko2; // tu też
  10.  
  11. // Przypisujesz rodzica.
  12. $this->dziecko1->parent = $this;
  13. $this->dziecko2->parent = $this;
  14. }
  15.  
  16. }

Potem wewnątrz klasy dziecka robisz tak:
  1. class dziecko1 extends glowna
  2. {
  3.  
  4. public function funkcja1()
  5. {
  6.  
  7. echo("Klasa: dziecko1<br />\r\n");
  8.  
  9. // Musisz najpierw odwołać się do rodzica, a następnie z niego pobrać drugie dziecko.
  10. $this->parent->dziecko2->funkcja2();
  11. }
  12.  
  13.  
  14. }
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.