Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Programowanie obiektowe - określenie typów parametrów
M4ver7071
post 16.10.2014, 22:19:41
Post #1





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 26.06.2014

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


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...

Ten post edytował M4ver7071 16.10.2014, 22:22:36
Go to the top of the page
+Quote Post
Szymciosek
post 16.10.2014, 22:44:24
Post #2





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


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
Go to the top of the page
+Quote Post
M4ver7071
post 17.10.2014, 09:39:40
Post #3





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 26.06.2014

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


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 ?
Go to the top of the page
+Quote Post
Turson
post 17.10.2014, 09:43:09
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


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
Go to the top of the page
+Quote Post
M4ver7071
post 17.10.2014, 10:37:48
Post #5





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 26.06.2014

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


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..
Go to the top of the page
+Quote Post
Turson
post 17.10.2014, 10:42:53
Post #6





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


  1. public function ship(Percel $percel)
  2. {
  3. var_dump($percel);
  4. }

może to rozjaśni
Go to the top of the page
+Quote Post
M4ver7071
post 17.10.2014, 11:21:27
Post #7





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 26.06.2014

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


Wielkie dzięki za wskazówki biggrin.gif ogarnąłem smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 23.05.2024 - 22:09