Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> trait vs interface
kayman
post
Post #1





Grupa: Zarejestrowani
Postów: 556
Pomógł: 40
Dołączył: 20.07.2012
Skąd: Warszawa

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


może chcę za dużo pisząc takie?


  1.  
  2. trait Tr {
  3.  
  4. public function getC() {
  5. echo 'asd';
  6. }
  7.  
  8. }
  9. }
  10.  
  11.  
  12. interface In {
  13.  
  14. public function getC();
  15.  
  16. }
  17.  
  18.  
  19. class B extends A implements In {
  20.  
  21. public function getC() {
  22. echo 'asd';
  23. }
  24.  
  25. }
  26.  
  27.  
  28. // a to wywala błąd
  29.  
  30.  
  31. class B extends A implements In {
  32.  
  33. use Tr;
  34.  
  35.  
  36. }
  37.  
  38.  


czyżby interface nie rozpoznaje metod wstrzykniętych przez trait?

Ten post edytował kayman 26.01.2015, 12:33:41
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
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%)
-----


  1. <?php
  2.  
  3. interface In {
  4. function getC();
  5. }
  6.  
  7. trait Tr {
  8. public function getC() {
  9. return 'Tr.getC()';
  10. }
  11. }
  12.  
  13. class A {
  14.  
  15. }
  16.  
  17. class B1 extends A implements In {
  18. public function getC() {
  19. return 'B1.getC()';
  20. }
  21. }
  22.  
  23. class B2 extends A implements In {
  24. use Tr;
  25. }
  26.  
  27. class B3 extends A {
  28. use Tr;
  29. }
  30.  
  31. $b1 = new B1();
  32. $b2 = new B2();
  33. $b3 = new B3();
  34.  
  35. var_dump($b1->getC());
  36. var_dump($b2->getC());
  37. var_dump($b3->getC());
  38. var_dump($b1 instanceof In);
  39. var_dump($b2 instanceof In);
  40. var_dump($b3 instanceof In);
Kod
string(9) "B1.getC()"
string(9) "Tr.getC()"
string(9) "Tr.getC()"
bool(true)
bool(true)
bool(false)
Jak widać wszystko w porządku.

EDIT: Pyton_000 mnie trochę wyprzedził.

Ten post edytował Crozin 26.01.2015, 12:47:17
Go to the top of the page
+Quote Post

Posty w temacie
- kayman   trait vs interface   26.01.2015, 12:32:21
- - Crozin   Cytata to wywala błądNie uważasz, że informacja ja...   26.01.2015, 12:35:05
- - kayman   jak jest [PHP] pobierz, plaintext  class B ...   26.01.2015, 12:39:56
- - Pyton_000   [PHP] pobierz, plaintext <?php trait Tr ...   26.01.2015, 12:45:51
- - Crozin   [PHP] pobierz, plaintext <?php interface I...   26.01.2015, 12:46:55
- - kayman   a teraz już zgłupiałem, co ma metoda z parenta wsp...   26.01.2015, 13:22:37
- - Pyton_000   To że deklarujesz kontrakt (interfejs) z jednym pa...   26.01.2015, 14:02:30
- - Crozin   Masz niekompatybilne sygnatury metod. Nie ma to ża...   26.01.2015, 14:04:21
- - kayman   czyli to jest żle i trzeba by np. inaczej nazwać m...   26.01.2015, 14:17:31
- - Crozin   1. Wykorzystanie magicznego __get() jest raczej zł...   26.01.2015, 14:49:14
- - kayman   chciałem np takie coś [PHP] pobierz, plaintext ...   26.01.2015, 15:35:07
- - Pyton_000   setData możesz spokojnie wywalić i dać w konstrukt...   26.01.2015, 15:48:51
|- - kayman   Cytat(Pyton_000 @ 26.01.2015, 15:48:5...   26.01.2015, 16:03:47
- - Pyton_000   ihmo [PHP] pobierz, plaintext $page = new Page...   26.01.2015, 16:09:26
- - kayman   dzięki panowie, wiem mniej więcej jak to przebudow...   27.01.2015, 09:23:57
- - Crozin   1. Takie podejście, czyli tzw. ActiveRecord, jest ...   27.01.2015, 10:37:36
- - Pyton_000   Może też użyć lżejszego Eloquent z Laravela, ale n...   27.01.2015, 10:55:31
- - kayman   nie mam nic przeciwko ORM z prawdziwego zdarzenia ...   27.01.2015, 11:27:18
- - Pyton_000   W Twoim Przypadku Trait nie jest potrzebny Bo: - i...   27.01.2015, 11:31:24
- - kayman   Pyton masz racje tylko w ten sposób zaraz napiszę ...   27.01.2015, 11:48:54
- - Pyton_000   Jeżeli chcesz się czegoś nauczyć to możesz rozwija...   27.01.2015, 11:55:36


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 - 07:53