Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Programowanie obiektowe - określenie typów parametrów
M4ver7071
post
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
 
Start new topic
Odpowiedzi
Szymciosek
post
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

Posty w temacie


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: 14.10.2025 - 22:57