Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][OOP]praktyczne wykorzystaie interfejsów
Forum PHP.pl > Forum > Przedszkole
michat34
witam ucze sie oop z kursu na wikipedii i obecnie jestem przy interfjsach. z tego co wiem mozna tam dawac (publiczne) prototypy metod czyli bez zadnych instrukcji. czy ktos mi moze wytłumaczyc jaki jest w takim razie ich sens? przykładowo, co mi daje:

  1. <?php
  2. interface Interface
  3. {
  4. public function Function1 ();
  5. public function Function2 ($a);
  6. }
  7.  
  8. class Class implements Interface
  9. {
  10. public function Function1 ()
  11. {
  12. // troche operacji
  13. }
  14. public function Function2 ($a)
  15. {
  16. //troche innych operacji
  17. }
  18. }


tak wiec skoro tak czy siak uniewazniam ta metode to jaki sens ma takie interfejsowanie? tylko dodatkowe kilka linijek kodu..
przynajmniej ja tak to widze, wiec prosze kogos bardziej doswiadczonego o wyprowadzenie mnie z bledu wink.gif pozdrawiam
CuteOne
  1.  
  2. interface Ssaki {
  3.  
  4. public function sssie();
  5. public function gryzie();
  6. }
  7.  
  8. interface Gady {
  9.  
  10. public function gryzie();
  11. }


  1. class Kon implements Ssaki {
  2.  
  3. public function sssie() { echo 'sssie<br>'; }
  4. public function gryzie() { echo 'aaa<br>'; }
  5. }
  6.  
  7. class Waz implements Gady {
  8.  
  9. public function gryzie() { echo 'bbb<br>'; }
  10. }
  11.  
  12. class Zwierze {
  13.  
  14. public $zwierz;
  15.  
  16. public function dodajKonia(Ssaki $zwierze) {
  17.  
  18. $this->zwierz= $zwierze;
  19. }
  20.  
  21. public function dodajWeza(Gady $zwierze) {
  22.  
  23. $this->zwierz = $zwierze;
  24. }
  25. }
  26.  
  27. $zwierze = new Zwierze();
  28. $zwierze -> dodajKonia(new Waz()); // wywali błąd
  29.  
  30. //teraz od komentuj poniższy kod i usuń ten u góry
  31. /*
  32. $zwierze = new Zwierze();
  33. $zwierze -> dodajKonia(new Kon());
  34. $zwierze->zwierz -> sssie();
  35. $zwierze->zwierz -> gryzie();
  36.  
  37. $zwierze -> dodajWeza(new Waz());
  38. $zwierze->zwierz -> gryzie();
  39. */


Prosty przykład jak w praktyce, można wykorzystać interfejsy - jest późno więc jutro napiszę o co tu chodzi wink.gif
b4rt3kk
Klasa dziedzicząca po interfejsie musi implementować jej wszystkie metody.
michat34
@CutyOne ok wink.gif
@bart4kk w kursie pisalo ze interfejsy w php sa taka troche alternatywa do wielodziedziczenia z innych jezykow. a w ten sposob wydaje mi sie ze nie sa taka, bo nie moge klasy rozszerzac o nowe własciwosci a jedynie wymuszac to ze ta klasa ma jakies własciwosci posiadac. czyli ja cos zle rozumiem czy interfejsy sluza glownie utrzymaniu porzadku w kodzie?
viking
Głownie tak (porządkowanie). Podejrzewam że kurs stary i nie bierze pod uwagę że od 5.4 są http://php.net/manual/en/language.oop5.traits.php
michat34
@viking dzieki za link, poczytam. czy kurs stary, to zalezy jak patrzyc. ostatnia modyfikacja 2010 r., 2 lata to w swiecie komputerów dosyc sporo, ale i tak jest to jeden z nowszych kursow jakie znalazłem odnosnie php
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.