![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 117 Pomógł: 0 Dołączył: 13.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Zaczynam przygodę z OOP. Czy idę w dobrym kierunku, czy zarys mojej pierwszej klasy walidacji i jej użycie jest bez sensu (jeśli tak co jest nie tak)?
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
1. metody kasy powinny zwracać wartości (czyli pozbądź się echo)
2. zakładając że pasuje Ci to co napisałeś i używasz tylko title i tags... a co jeśli będziesz chciał coś dopisać? kolejna metoda? Nigdy nie powtarzaj kodu który już wcześniej napisałeś. 3. Zrób jedną metodę np.
4. Mając błędy w zmiennej $error, możesz je wyświetlać przez kolejną metodę i tak masz wszytko ładnie poukładane. -------------------- Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta). |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Moim zdaniem bardzo dobry mechanizm walidacji danych ma Kohana:
http://kohanaframework.org/3.3/guide/kohan...rity/validation Zapoznaj się z powyższym linkiem i spróbuj stworzyć coś analogicznego. Generalnie idea jest taka, że tworzysz klasę Valid, która zawiera gotowe reguły walidacji (np. długość ciągu, poprawność adresu e-mail itd.). Druga klasa to Validation, która zawiera w sobie informacje o polach i powiązanych z nimi regułami walidacji. W wyniku sprawdzenia metodą validate() czy check() (jak tam wolisz) otrzymujesz tylko prawda/fałsz - czy przekazane dane są prawidłowe. Jeśli nie dostęp do komunikatów o błędach powinieneś zrealizować osobną metodą np. errors(). Główną zaletą klasy Validation powinno być to, że jako regułę walidacji możesz podać dowolne wywołanie zwrotne (callback). Dzięki temu otrzymasz rozszerzalny komponent do sprawdzania poprawności każdych danych i na każdy sposób. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 117 Pomógł: 0 Dołączył: 13.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Głównie chodzi mi o to, że dla mnie np lepszym rozwiązaniem byłoby ustalić sobie w klasie dostępne metody określonych pól np: title, tags, text, price, date itd tak jak mam powyżej. Bo np i w dodawaniu newsa czy ogłoszenia, zawsze chce mieć tytuł wymagany o długości od 5 do 50 znaków. Edytując news czy ogłoszenie też odwołuję się do np metody title i wszystko mam sprawdzane tą metodą. A wg Waszych przykładów zawsze muszę ustalać od początku max długość stringu itd dla np pola title, nawet jeśli go mam w 10 różnych miejsach i ma mieć te same właściwości (jak sie mylę to mnie poprawcie;p). OOP uczę się od paru dni i staram się tworzyć kod pod własne potrzeby na próbach, błędach i przykładach, jak np walidacja, upload zdjęć itd, a że to początki OOP w moim przypadku to jest w nich wieleeee niedoskonałości.
Podsumowując: - Czy jeśli potrzebuję sprawdzania pól title, tags, date, price itd w różnych miejsach jak newsy, ogłoszenia (dodawanie, edycja) trzymać się swojej wersji i ustalić z góry metody title, tags... i tylko się do nich później odwoływać, czy wykorzystywać Wasze wzory? - Skoro nie używać echo w metodach, jak np do $error dobrać w OOP odpowiedni komunikat do danego pola (przykład: sprawdzam pole title, i gdzie trzymać komunikaty typu: Pole tytuł jest za długie, jest wymagane i jak je dopasować)? |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Nie szedłbym w tym kierunku jaki prezentujesz IMO jest on mało wydajny, choćby do rozbudowy skryptu w przyszłości, po co pisać 40 razy ten sam fragment kodu, skoro można tylko raz.
- Skoro nie używać echo w metodach, jak np do $error dobrać w OOP odpowiedni komunikat do danego pola (przykład: sprawdzam pole title, i gdzie trzymać komunikaty typu: Pole tytuł jest za długie, jest wymagane i jak je dopasować)?
Ten post edytował !*! 9.11.2012, 17:06:28 -------------------- Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta). |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 21:48 |