Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Interfejsy Począwszy od klasy głównej
daniel1302
post
Post #1





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

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


Witam mam główną klasę
Validator implements ValidatorInterface
EmailValidator extends Validator
PassValidator extends Validator

oraz
interface ValidatorInterface
{
public function validating($subject)
}


Wszystkie klasy oprócz Validator mają metodę validating($subject)
praser PHP zwraca błąd ze klasa validator niema metody ... pomimo iż odwołuje się do $email = new EmailValidator;
Jak wymusić żeby wszystkie klasy pochodne mieły metodę validating?
Musze do każdej klasy pochodnej dopisywać interfejs ValidatorInterface?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Kicok
post
Post #2





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


Jeżeli nie będziesz nigdy tworzył obiektów klasy Validator ( a na to wygląda, skoro nie ma ona metody validating() ), to przerób ją na klasę abstrakcyjną:

  1. <?php
  2.  
  3.  
  4. abstract class Validator
  5. {
  6. abstract public function validating();
  7.  
  8.  
  9. protected function cos()
  10. {
  11. return 'aabbcc';
  12. }
  13. }
  14.  
  15.  
  16. class EmailValidator extends Validator
  17. {
  18. public function validating()
  19. {
  20. return 'EmailValidator::validating() - ' . $this->cos();
  21. }
  22. }
  23.  
  24. class PassValidator extends Validator
  25. {
  26. public function validating()
  27. {
  28. return 'PassValidator::validating() - ' . $this->cos();
  29. }
  30. }
  31.  
  32.  
  33. $email = new EmailValidator;
  34. echo $email->validating();
  35.  
  36. ?>
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: 5.10.2025 - 10:44