![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 0 Dołączył: 19.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Ostatnio wglebiam sie w tajniki OOP w PHP5, mam ambitny cel napisac aplikacje implementujaca wzorzec MVC i mam na to 2 miesiace. Mam nadzieje, ze mi sie uda ;p W kazdym badz razie korzystam z ksiazki "PHP 5 Zaawansowane programowanie" i materialow tu i tam znalezionych w sieci. Postanowilem sobie przerobic srednio-zaawansowany przykladzik z rozdzialu 3, no i napotkalem na taki problem:
W ksiazce jest interfejs:
Czy w interfejsach powinno sie w ogole definiowac metody abstrakcyjne ? Przeciez one same w sobie takie moga byc pozniej juz w implementacji danej klasy - jezeli zadeklarujemy klase jako abstract. I dalej w ksiazce jest klasa PropertyObject abstrakcyjna, bo nie ma zaimplementowanej funkcji validate, a np. klasa Entity dziedziczaca po PropertyObject juz nie jest abstrakcyjna (mimo, ze w implementacji metody validate() jest tylko komentarz - czy sprawia on, ze dzieki temu komentarzowi jest juz implementacja ![]() Dziwna sprawa, w kazdym badz razie to nie dziala i wywala: Fatal error: Access type for interface method Validator::validate() must be omitted in .... Jak zamienilem abstract na public, to smiga... Blad w ksiazce, czy ja zle mysle ? Ten post edytował Reigon 13.03.2007, 21:59:09 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 800 Pomógł: 0 Dołączył: 26.11.2005 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Błąd w książce się wkradł. Kolego manual nie gryzie
![]() Z resztą implementacja znaczy :
Tyle wystarczy. Ale musi być taka sama jak w interfejsie lub abstrakcyjnej klasie. Pamiętaj o tym. -------------------- Jah Music Is On My Mind !
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 0 Dołączył: 19.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
W manualu nie znalazlem podobnego problemu. Dzieki w utwierdzeniu mnie w moim przekonaniu...i jak tu sie uczyc z takich ksiazek ;p
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
@Reigon: ta książka ma w p.... błędów i jeszcze trochę. Sam przez to przechodziłem. Poz atym jak ją przerobisz i będziesz szukał na tym forum i innych stronach odpowiedzi na nurtujące Cię pytania zauważysz, że przykłady w tej książce nie są trafione. Przynajmniej moje takie zdanie. Ale nie żałuje że przeczytałem.
-------------------- ”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335) |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 800 Pomógł: 0 Dołączył: 26.11.2005 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Wcale nie... Książka ta bardzo pomaga zrozumieć wiele rzeczy. Dzięki niej załapałem o co chodzi z MVC
![]() ![]() -------------------- Jah Music Is On My Mind !
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Wcale nie... Książka ta bardzo pomaga zrozumieć wiele rzeczy. Dzięki niej załapałem o co chodzi z MVC ![]() ![]() Każdy może mieć inne zdanie. Jeśli chodzi o rozdział o MVC to totalna kicha. -------------------- ”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335) |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 0 Dołączył: 19.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Jezeli chodzi o MVC, to bardzo pobieznie, oczywiscie mozna zrozumiec ten wzorzec, ale tam jest to zaprezentowane czysto teoretycznie - tak czy inaczej przyda sie do pracy, chociazby jako podpora teorii.
W dalszej czesci ksiazki znowu widzialem abstrakcyjna deklaracje metody w interfejsie...wiec moze jednak ten kod, co podalem w pierwszym poscie jest dobry, a blad wynika z czegos innego ? Tylko nie wiem z czego....bo w reszcie klas (implementujacej ten interfejs) jest albo definicja tej metody albo chociaz deklaracja (no bo musi byc - a moze nie musi...bo jest abstract w interfejsie). Interpreter doczepil sie konkretnie tej linijki, gdzie bylo abstract dla metody w interfejsie - po zmianie na public - ok. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 08:30 |