Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przekazywanie wywołującego obiektu do funkcji.
Forum PHP.pl > Forum > PHP
BigPig
Witajcie, natrafiłem na problem w funkcji opisanej w książce: "PHP obiekty, wzroce, narzędzia". W oryginale kod jest o wiele większy i sensowniejszy, ale mi chodzi tylko o jeden niedziałający mechanizm.

  1. abstract class Aos
  2. {
  3. public $pies = "pipi";
  4. protected $obiekt;
  5.  
  6. function __construct(Cos $obiekt)
  7. {
  8. $this->obiekt = $obiekt;
  9. }
  10.  
  11. function Wyprz()
  12. {
  13. $this->obiekt->funkcja($this);
  14. }
  15. }
  16.  
  17. class Bos extends Aos
  18. {
  19.  
  20. }
  21.  
  22. class Cos
  23. {
  24.  
  25. function funkcja(Aos $obiekcik)
  26. {
  27. return $obiekcik;
  28. }
  29. }
  30.  
  31. $test = new Bos(new Cos());
  32.  
  33. print_r($test->Wyprz());


Wiem, że bezsensowne jest zwracanie obiektu w funkcji "funkcja", ale chciałem sprawdzić czy obiekt się faktycznie zwraca. Problem w tym, że się nie zwraca, choć ogólnie rzecz biorąc powinien.

Jeśli damy tak:
  1. class Cos
  2. {
  3.  
  4. function funkcja(Aos $obiekcik)
  5. {
  6. echo "To dziala jejejeje";
  7. }
  8. }


I normalnie to wywołamy to napis się pokaże, czyli jest dobre przekierowanie, a jest problem z obiektem.

Drodzy forumowicze, w czym problem? Jest to schemat żywcem zaczerpnięty z książki.
redeemer
Zauważ, że wykonujesz funkcję Wyprz() która nie zwraca nic, więc kod zachowuje się prawidłowo. Zamiast
  1. function Wyprz()
  2. {
  3. $this->obiekt->funkcja($this);
  4. }
daj
  1. function Wyprz()
  2. {
  3. return $this->obiekt->funkcja($this);
  4. }
i powinieneś osiągnąć efekt jaki chcesz.

Edit: literówka
BigPig
O kurde, faktycznie, umkneło mi to. Dzięki biggrin.gif
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.