Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Parametry metod w interfejsach, uniknięcie wymuszania konkretnych parametrów w metodach
Speedy
post
Post #1





Grupa: Zarejestrowani
Postów: 651
Pomógł: 28
Dołączył: 4.12.2004

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


hej, próbuję okiełznać częściowo php5 (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) i mam takie pytanie:

Czy da się w jakiś sposób implementować interfejs w danej klasie, ale tak, aby w tej klasie były wymagane tylko konkretne metody, które zawiera interfejs i żeby nie była wymuszana konkretna ilość argumentów dla tych metod? Wiadomo, że interfejsy wymagają utworzenia w klasie konkretnych metod z konkretną ilością parametrów. Ja chciałbym natomiast mieć taki interfejs, który będzie wymagał tylko tego, żeby w klasie znajdowały się metody o konkretnych nazwach, ale w różnych implementacjach będą one miały różną liczbę argumentów. Da się coś takiego zrobić?

Po prostu mam kilka klas, które mają takie same schematy nazewnictwa metod, ale czasami w niektórych metodach jest potrzeba podania większej ilości argumentów niż w innych klasach. Można to oczywiście uwzględnić w interfejsie i dodać parametry do wszystkich metod, ale wtedy te dodane parametry będą w niektórych miejscach w ogóle niewykorzystywane...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Speedy
post
Post #2





Grupa: Zarejestrowani
Postów: 651
Pomógł: 28
Dołączył: 4.12.2004

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


Dzięki za odpowiedzi.

Chyba jednak zdecyduję się na zrobienie większej ilości interfejsów dla paru wyjątkowych klas.
Po prostu wydaje mi się, że interfejsy służą także do ujednolicenia budowy kilku klas (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) . Może się mylę...

W każdym razie mogę Wam przedstawić mój konkretny przykład.

Mam sobie taką klasę

  1. <?php
  2. class info extends abstractModule implements defaultModule {
  3.  
  4. public function add($params)
  5. {
  6. }
  7.  
  8. public function remove($id)
  9. {
  10. }
  11.  
  12. public function edit($id,$params)
  13. {
  14. }
  15.  
  16. public function getAll($category)
  17. {
  18. }
  19.  
  20. public function getOne($id)
  21. {
  22. }
  23.  
  24. }
  25. ?>


I mam jeszcze kilka innych klas o takiej samej budowie, tylko że mają obsługiwać one inne dane. Niektóre z nich posiadają jakieś dodatkowe metody, ale wszystkie z nich muszą posiadać te, co ta klasa napisana powyżej.
Tylko akurat jedna z klas nie potrzebuje żadnego parametru przy metodzie getAll(), więc dla niej i tej podobnych klas zrobię oddzielny interfejs.
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: 3.10.2025 - 13:44