Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Metody abstrakcyjne i ich dziedziczenie
Forum PHP.pl > Forum > Przedszkole
Koldy
Czesc mam taki problem:
Kod
Fatal error: Declaration of Home::IndexAction() must be compatible with Controller::IndexAction()


Chodzi o to ze mam kontroler Home ktory dziedziczy po klasie Controller ktora jest baza, mam w niej dwie metody abstrakcyjne
  1. abstract public function IndexAction();
  2. abstract public function ErrorAction();


teraz w kontrolerze Home chcialem zrobic
  1. public function IndexAction($arg) {
  2. }


ale mi nie pozwala i dostaje blad, myslalem nad interfejsami ale one dzialaja chyba w ten sam sposob tak?
jakis workaround?
memory
  1. abstract public function IndexAction($arg);
Sephirus
Metody abstrakcyjne działają w taki sposób, że określają (podobnie jak interfejsy) deklaracje metody jaką należy stworzyć w klasie pochodnej. Ze względu na to, że jest to rodzaj wymuszenia odpowiedniej deklaracji (nazwa + argumenty) metoda klasy dziedziczącej, która implementuje daną metodę abstrakcyjną musi być identyczna.

Jeżli w klasie bazowej masz zadeklarowaną metodę bez argumentów, oznacza to, że jest to takie wymuszenie by metoda w klasie pochodnej też ich nie przyjmowała. Jeśli korzystasz z gotowych (czyichś) klas musisz się tego trzymać, jeśli piszesz coś sam - musisz na poczatku zastanowić się i dobrze zadeklarować metody abstrakcyjne i trzymać się ich deklaracji w każdej klasie dziedziczącej.
Koldy
tego sie obawialem, dzieki i pozdrawiam
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.