![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 429 Pomógł: 195 Dołączył: 6.10.2008 Skąd: Kraków/Tomaszów Lubelski Ostrzeżenie: (0%) ![]() ![]() |
Witam, zaczynam z OOP i napisałem prostą klasę walidującą dla małych formularzy, napiszcie co można poprawić, miałem ją zaopatrzyć w MVC i prezentować błędy widokiem ale to już na kiedy indziej.
Ten post edytował MateuszS 21.04.2010, 17:23:14 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
JAk już napisałem... w PHP interfejsy nie grają istotnej roli. Ich zadanie to:
Zagwarantowanie, że jeżeli dany obiekt implementuje dany interfejs to można na nim "w ślepo" wykonywać metody zdefiniowane przez ów interfejs. Można nie trzeba. Dlaczego użyłem interfejsu? Ponieważ klasa Validator wywołuje metodę isValid() na dostarczonych jej obiektach-walidatorach. Dzięki temu, że użyto interfejsu mam pewność, że taka metoda jest zdefiniowana w obiekcie-walidatorze. W tym małym, prostym kodzie takie sprawdzanie może wydawać się sztuką dla sztuki (przecież sam piszę, to wiem, że ma, ani nie przekażę czegoś co walidatorem nie jest) i o ile do kodu nie będziesz musiał zaglądać po kilku tygodniowej przerwie, nie zdecydujesz się go "udostępnić" albo nie przyjdzie Ci pracować nad nim w jakimś zespole to będzie sztuką dla sztuki. Nie chce mi się już powtarzać zastosowań interfejsów, bo o ile dobrze pamiętam zrobiłem to już kiedyś w podlinkowanym wątku. Co do klasy abstrakcyjnej... Ona definiuje nam metody wspólne dla zamieszczonych tam walidatorów. Możesz się jej pozbyć, ale jeżeli to zrobisz wszystkie walidatory (String, NIP, Email) wyplują Ci błąd: brak metod getOptions, getOption, configure - w interfejsie zadeklarowałeś, że takie metody są, a w kodzie ich nie ma. Tak więc musiałbyś uzupełnić każdy walidator o te trzy metody. Klasa Validator\Base definiuje właśnie te trzy metody, byś nie musiał ich powtarzać w każdym z walidatorów. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.10.2025 - 14:01 |