![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 14.11.2013 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam problem z dziedziczeniem. Zrobiłem klasę AbstractController która zawiera metodę getView(), która zwraca mi zmienną $view w której trzymam ścieżkę do pliku z widokiem.
Stworzyłem klasy UserController oraz IndexController która dziedziczy po klasie AbstractController. W metodzie tych klas, indexAction() ustawiam ścieżkę do pliku i zapisuję ją w zmiennej $view:
Dalej stworzyłem klasę Strategy która wybiera, który controller utworzyć:
następnie stworzyłem klasę View która odpowiada za wyświetlenie:
No i na końcu plik index.php który to wszystko łączy:
Wszystko działa pięknie jeśli do klas UserController i IndexController dodam ręcznie metodę getView która znajduje się u ich rodzica AbstractController. Same niestety tej metody nie chcą dziedziczyć. Tzn dziedziczą lecz do klasy View dociera pusta zmienna $view zbłędem: Warning: require(): Filename cannot be empty in C:\websites\mikrop\vendor\Framework\View\View.php on line 20 Fatal error: require(): Failed opening required '' (include_path='.;C:\php\pear') in C:\websites\mikrop\vendor\Framework\View\View.php on line 20 Tak jakby klasa UserController i IndexController odziedziczyły metodę getView() lecz nie wykonały jej wogóle(?) lub niewykonały jej porawnie? Jeśli bedę miał większą ilość Controllerów to wolałbym aby metoda która i tak zawsze będzie wyglądać tak samo, mogła być dziedziczona. Niestety gdzieś robię błąd. Proszę o pomoc. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 60 Dołączył: 25.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
Poczytaj o widoczności zmiennych protected i private. W klasie AbstractController właściwość $view jest private, czyli nie jest widoczna w klasach potomnych.
-------------------- there is much to be learned
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 14.11.2013 Ostrzeżenie: (0%) ![]() ![]() |
No pewnie że o to chodziło! Dziękuje, jedno małe przeoczenie i tyle godzin zmarnowanych
![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 30.06.2025 - 01:48 |