Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wywołanie klas w metodach, totalny brak pomysłu na temat
lord_borsuk
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 3.08.2008

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


Witam
Przeglądając ostatnio dokumentacje frameworków zauważyłem ze tam obiekty są używane z poziomu metod klas do których te obiekty nie zostały w żaden sposób przekazane, i moje pytanie brzmi jak coś takiego się robi ??
Wiem ze to średnio określiłem problem, ale nie mam bladego pojęcia jak to inaczej opisać ponieważ dopiero zaczynam z OOP, i trochę brakuje mi języka.
Umiem korzystać z google, ale nie wiem czego szukać, więc jak byście mogli mi podsunąć coś co by mnie naprowadziło mnie na rozwiązanie problemu był bym bardzo wdzięczny.
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%)
-----


Mógłbyś pokazać jakiś przykładowy kod?
Go to the top of the page
+Quote Post
smentek
post
Post #3





Grupa: Zarejestrowani
Postów: 130
Pomógł: 11
Dołączył: 7.04.2003

Ostrzeżenie: (10%)
X----


Kosmici i czarna magia... Obiekty "używane z poziomu metod klas do których te obiekty nie zostały w żaden sposób przekazane" zostały przekazane w obiektach bazowych po które opisywane obiekty dziedziczą.
  1. class A
  2. {
  3. protected $x;
  4. public function setX( $x )
  5. {
  6. $this->x = $x;
  7. }
  8.  
  9. public abstract sendToAnotherDimension( $z );
  10.  
  11. public function blackMagic()
  12. {
  13. $this->sendToAnotherDimension( 'Agent Mulder z archiwum ' );
  14. }
  15.  
  16. }
  17.  
  18. class B extends A
  19. {
  20. /**
  21.   * Metoda frameworka (np kontroler) Klasy A wogole nie widzisz bo jest
  22.   * ona ukryta w bebechach systemu...
  23.   * @param string $caramba
  24.   */
  25. public function sendToAnotherDimension( $caramba )
  26. {
  27.  
  28. //$x jest tutaj dostepny z powietrza (na pierwszy rzut oka)
  29. echo $caramba . $this->x;
  30. }
  31. }
  32.  
  33. $b = new B();
  34. $b->setX('X');
  35. $b->blackMagic();
  36.  


Ten post edytował smentek 28.02.2011, 09:34:33
Go to the top of the page
+Quote Post
LBO
post
Post #4





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


klasa B dziedziczy x i setX z klasy A - tutaj wszystko jest w porządku.

Natomiast to, że w A nie ma zadeklarowanej metody sendToAnotherDimention (chociażby abstrakcyjnej) to już niedbalstwo programisty, niestety parser PHP nie uzna tego za błąd.
W momencie kiedy wywołujesz blackMagic jako metodę na instancji klasy B to sendToAnotherDimention() już tam jest.
Go to the top of the page
+Quote Post
smentek
post
Post #5





Grupa: Zarejestrowani
Postów: 130
Pomógł: 11
Dołączył: 7.04.2003

Ostrzeżenie: (10%)
X----


True.
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: 21.12.2025 - 10:06