Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Interfejsy Począwszy od klasy głównej
Forum PHP.pl > Forum > PHP
daniel1302
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?
Kicok
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. ?>
daniel1302
Dziękuje znam to wszystko lecz już z 3 miesiące nie pracowałem w OOP i sie to za pomina
Kocurro
@daniel1302: uwierz mi, że gdybyś to faktycznie znał to byś nie zapomniał nawet po 3 latach przerwy w pracy winksmiley.jpg

To taki mały offtopic .

pozdr.
Łukasz
daniel1302
Znam to lecz nie pracowałem z tym długo bo jakieś 2 tyg i później wogóle
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.