Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Programowanie obiektowe - określenie typów parametrów
Forum PHP.pl > Forum > PHP
M4ver7071
Witam, mam pytanie odnośnie określania typów parametrów w obiektach.

Przykład :
  1. class Percel
  2. {
  3.  
  4. public function run()
  5. {
  6. return 'siema';
  7. }
  8.  
  9. }
  10.  
  11. class Example
  12. {
  13. public function ship(Percel $percel)
  14. {
  15. }
  16.  
  17. }



Mam pytanie odnośnie tej linijki
  1. ship(Percel $percel)
bo nie wiem czy dobrze rozumiem. Do metody ship jako parametr można tylko dać metody z Klasy Percel, tak? A jak będę chciał się odwołać w metodzie ship do metody run() to wystarczy napisać $percel->run ? Bo nie wiem dlaczego tak jest to zapisane...
Szymciosek
Chodzi tutaj o przekazywanie konkretnego typu obiektu. W tym przypadku zadziała tutaj wszystko co będzie typu Percel. Więc tak, przekazując nie metody, tak jak piszesz, a całą klasę Percel uzyskasz do nich dostęp.

Dodatkowo możesz zrobić coś takiego

class Something extends Percel {}

do ship przekazać tak naprawdę Something i to również zadziała, bo w ostateczności obiekt Something składa się z Percel

ship(Percel $percel).


Inny case:
wykorzystanie interface

interfeca MyInterface....
class Something implements MyInterface {}

ship(MyInterface $obj)

do ship możesz przekazać Something mimo, że w deklaracji funkcji zamieściłeś MyInterface
a dlaczego? Dlatego, że spodziewasz się metod, które masz zadeklarowane w interfejsie
M4ver7071
Okej, a jeżeli np. Klasa Something nie dziedzyczy po Percel a mimo wszystko jest taki zapis ship(Percel $percel) ? A jeżeli mamy zapis taki ship(Percel $percel) to jeżeli chce się odwołać do tego obiektu to używam w metodzie ship { $this->percel = $percel } tak ?
Turson
Wewnątrz metody będzie to $percel, jak chcesz odwoływać się z innych metod to tak jak napisałeś. Dostęp do $percel jest taki sam jak do wszystkich argumentów
M4ver7071
Czyli wewnątrz metody ship jeżeli chciałbym się odwołać do metody run w Percel. To poprostu piszę tak public function ship(Percel $percel) { $percel->run(); } ? Czy jakoś inaczej bo chce to zrozumieć dobrze..
Turson
  1. public function ship(Percel $percel)
  2. {
  3. var_dump($percel);
  4. }

może to rozjaśni
M4ver7071
Wielkie dzięki za wskazówki biggrin.gif ogarnąłem smile.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.