![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 126 Pomógł: 5 Dołączył: 17.07.2011 Ostrzeżenie: (0%)
|
Ogólnie dopiero zaczynam programować w OOP, dlatego postanowiłem rozdzielić klasę do walidacji na części. W ogólnym skrócie przejrzałem sporo materiału, znalazłem, iż klasa abstrakcyjna to taka klasa, której obiektu nie można utworzyć, więc można tylko dziedziczyć. Proszę o nakierowanie mnie, jakie metody powinny znaleźć się w interfejsie, które w klasie, która dziedziczy. Czy użyć klasy abstrakcyjnej ? Tutaj wykorzystałem informacje, że przy walidacji, która jest wszędzie, używam Validator validator, gdzie Validator to nazwa interfejsu z metoda doValidate(). Jakie elementy powinny znaleźć się w interfejsie czy są to np. filtry, sposób walidacji, sposób odebrania danych, a których mi brakuje ? Jak powinna wyglądać taka zdatna klasa? Ten post edytował cer98 6.08.2011, 21:31:59 |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%)
|
Straszne błędy popełniasz.
1. Wiesz do czego służy interfejs? Ale nie wal regułki z wikipedii, tylko wg Ciebie, do czego głównie służy interfejs? 2. Tutaj masz klasę do walidacji tylko stringów, a co z liczbami, datami itd? Nazywaj klasy tak, aby było jednoznaczne co robią? Na Twoim miejscu olałbym ten interfejs, bo jest tutaj nie potrzebny. Zrób sobie klasę Validator. W niej pola z nazwą obiektu do walidacji i parametrami. Potem dopisz metody set, get i dla każdego typu walidacji dopisz metode do walidacji na zasadzie: itd. Ten post edytował IceManSpy 6.08.2011, 19:43:33 |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 126 Pomógł: 5 Dołączył: 17.07.2011 Ostrzeżenie: (0%)
|
1. Żeby obiekt klasy, która dziedziczy mógł nabrać jakieś właściwości i wiele innych
2. One są w private $parameters Więc ani jednej klasy abstrakcyjnej, dziedziczącej i interfejsu ? Nie wierzę, że to dobre rozwiązanie, ponieważ walidacja jest wszędzie. Nie wiem jak taka metoda mogłaby wyglądać, jeżeli walidację przeprowadza już jedna metoda, która wczytuje parametry z tablicy. Ten post edytował cer98 6.08.2011, 19:49:55 |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%)
|
1. A po co Ci to? Ok, możesz napisać interfejs,a potem go implementować dla każdego walidatora (każda osobna klasa dla każdego typu walidacji), ale po co? Ktoś, kto by używał Twojego kodu musi pamiętać nazwy klas. A moim przypadku zrobi sobie obiekt klasy walidator, napisze -> i wyskoczy mu podpowiedź. I przy dobrym nazewnictwie połapie się do czego dana metoda służy.
Zobacz jak to w Zendzie robią: http://framework.zend.com/manual/en/zend.validate.set.html A tutaj masz krótki kod:
I od razu wiesz, co dana metoda robi. 2. A w tym przypadku inny programista musi wiedzieć jakie parametry ma podać. No chyba, że napiszesz do tego wielką dokumentację ;> Strasznie utrudniasz sobie życie. To co chcesz zrobić to albo klasa zbiorcza, albo interfejs i miniklasy. Nie myśl, że wielki profesjonalizmem jest zrobieniem skomplikowanego dziedziczenia czy interfejsów. PO CO?! Ten post edytował IceManSpy 6.08.2011, 20:07:23 |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 126 Pomógł: 5 Dołączył: 17.07.2011 Ostrzeżenie: (0%)
|
Chodzi mi o to, żeby klasa była uniwersalna.
Podając po kolei metody na login, hasło, aktualnie muszę dodać również walidator, napisać co i jak ma być sprawdzane, dodaję za pomocą addValidator, następnie doValidate z nazwą stworzonego filtra w tej samej tablicy. doValidateEmail po prostu wywoływałby funkcję doValidate z wnętrza, dobrze rozumiem ? nie chciałbym używać w kontrolerze $_POST, tylko dane odebrać wcześniej.
Ten post edytował cer98 6.08.2011, 20:15:57 |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%)
|
Skąd Ci się jakiś kontroler tutaj bierze?! Zostaw na razie MVC.
Na prawdę poczytaj na temat obiektówki, bo strasznie mieszasz. Zrób sobie klasę walidator, w niej metody doValidateString, doValidateMail itd które zwracaja true/false, a parametry możesz przekazać przez te metody (np długość itd). Wtedy będziesz mógł wykorzystać to w przyszłości. Jak się nie zgadzasz z tym to napisz jeszcze raz jak Ty myślisz. Tylko krótsze zadania pisz, a najlepiej to w punktach. P.S. A podanie w tablicy: 'pattern' => 'numericString' to jak odbierzesz i przerobisz? Ile będzie tych patternów? Ten post edytował IceManSpy 6.08.2011, 20:22:50 |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 126 Pomógł: 5 Dołączył: 17.07.2011 Ostrzeżenie: (0%)
|
obecny sposób:
Teraz możesz mi powiedzieć, jak mam wykonać twoją metodą, jeśli nie wiem, czy np. pole jest wymagane ? Jaki ma label ? Przecież jest mi to potrzebne, co widzisz powyżej, ale zwracam honor mogłeś nie wiedzieć mojej konstrukcji. |
|
|
|
Post
#8
|
|
|
Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa |
Cer98 - to co próbujesz zrobić strasznie przypomina mi: http://spawnframework.com/doc/25/sf_valid (IMG:style_emoticons/default/smile.gif)
|
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 126 Pomógł: 5 Dołączył: 17.07.2011 Ostrzeżenie: (0%)
|
Po prostu jeśli dodam do
to, czy ma być wypełnione, label dla błędu, będzie takie same. To nie mój pomysł, ja zaczerpnąłem sposób, w jaki wypełnić tablicę. Może tak być ? 1. Jak napisać do tego kontroler wiedząc, że allClear zwraca true jeśli gra, jeśli nie serializuję tablicę błędów ? 2. Mam drugie pytanie, co do wysyłania formularza, bo musi być określone. Jeśli mam wzorzec router, do tego index.php korzysta z szablonów i w jednym szablonie mam plik z takim formularzem - wysyłam go gdzie (pole action="") ? |
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%)
|
Teraz możesz mi powiedzieć, jak mam wykonać twoją metodą, jeśli nie wiem, czy np. pole jest wymagane ? Jaki ma label ? Przecież jest mi to potrzebne, co widzisz powyżej, ale zwracam honor mogłeś nie wiedzieć mojej konstrukcji. Do czego Ci label? Label służy tylko do opisu w formularzu - nie jest przekazywany. Tworzysz obiekt i dla każdej wartości z formularza wywołujesz odpowiednią metodę. I za pomocą niej sprawdzasz to co chcesz (np isRequired , isValid itd).No ale zostańmy, że przekazujesz jako tablica parametry do sprawdzenia. Pomysł nie najgorszy o ile nie będzie kilkudziesięciu parametrów do przekazania. Co do pytań. 1. Jak zwraca true to chyba Ty powinieneś wiedzieć, co chcesz zrobić z tymi danymi. Czyli:
Swoją drogą dla mnie allClear oznacza - wyczyść wszystko, a nie, że wszystko ok. Powinno być coś a'la isValid. 2. Tam go wysyłasz, gdzie go chcesz odebrać ;> |
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 126 Pomógł: 5 Dołączył: 17.07.2011 Ostrzeżenie: (0%)
|
Czy powinienem użyć tutaj redirect z serializacją błędów ?
Label używam po to, aby przy określonym polu wyświetlić komunikat błędu. |
|
|
|
Post
#12
|
|
|
Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%)
|
|
|
|
|
Post
#13
|
|
|
Grupa: Zarejestrowani Postów: 126 Pomógł: 5 Dołączył: 17.07.2011 Ostrzeżenie: (0%)
|
Mam już model do formularzy, jak napisać kontroler do obsługi formularzy, który korzystałby z modelu walidacja ?
p.s. czy te błędy można przesłać sesją ? Ten post edytował cer98 7.08.2011, 13:06:57 |
|
|
|
Post
#14
|
|
|
Grupa: Zarejestrowani Postów: 435 Pomógł: 40 Dołączył: 16.02.2003 Skąd: Wrocław Ostrzeżenie: (0%)
|
Co do walidacji:
najbardziej uniwersalne byłoby, jakbyś napisał sobie interfejs Validator (np tylko z metodą isValid(string) ) potem do każdego typu walidacji osobną klasę implementującą Twój interfejs. (validator od emaila, adresu strony i co tam sobie wymyślisz). W Twoim przypadku byłoby to korzystniejsze przy tworzenie formularzy i ich walidacji. W zendzie element formularza to obiekt
Dzięki czemuś takiemu, w przyszłości będziesz mógł łatwiej wykorzystywać swoje validatory do różnych celów. Do prostych zastosowań możesz zrobić jedną klasę validator z metodami isEmailValid i milionem podobnych, ale na dłuższą metę to się nie sprawdzi. |
|
|
|
Post
#15
|
|
|
Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%)
|
Skoro piszesz o kontrolerach i modelach, to jakiego używasz frameworka? Czy coś własnego masz?
|
|
|
|
Post
#16
|
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%)
|
Polecam modul validacji z frameworka kohana, bez problemu mozna go "wyciagnac" z framweorka. Masz tam wszystkie popularne metody walidacji. Walidator: http://kohanaframework.org/3.1/guide/api/Validation, metody walidacji: http://kohanaframework.org/3.1/guide/api/Valid
Wykorzystanie jest banalnie proste:
Zaleta jest mozliwosc definiowania wlasnych metod walidacji z ktorejkolwiek innej klasy |
|
|
|
Post
#17
|
|
|
Grupa: Zarejestrowani Postów: 126 Pomógł: 5 Dołączył: 17.07.2011 Ostrzeżenie: (0%)
|
Ice piszę framework, mam już wszystko, jestem przy FrontControllerze, dispatcherze. W końcu muszę jakoś dobrać się do moich metod. Dzięki za przykłady.
|
|
|
|
![]() ![]() |
|
Aktualny czas: 20.12.2025 - 21:57 |