![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
od jakiegos czasu usiluje sie nauczyc programowac obiektowo i napisalem cos takiego. nie wiem czy jest to napisane poprawnie ale dziala jak ja to sobie zalorzylem. lecz moje pytanie brzmi czy tak powinno to wyglada czy moze sprawdzanie poprawnosci wpisanych danych powinno byc poza klasa?? moze to zly przyklad ale chodzi mi o to ze jezeli teraz chcialbym sprawdzic czy pola zostaly wypelnione to czy mam to napisac w klasie czy poza nia?? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
pare uwag.
1) czemu tak:
nie lepiej
2) czemu w metodach masz np "bledny adres e-mail" nie lepiej false albo true 3) czemu $this -> policz_znaki(). anie self::policz_znaki(). 4) metoda sa public static czy jak .. acha a metody sprawdz_adres policz_znaki moge byc private chyba nie jestem specem ale tyle mi sie rzuciło Ten post edytował acztery 28.12.2006, 17:40:39 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 216 Pomógł: 0 Dołączył: 9.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
@acztery jesli sie czepiasz to czepiaj sie dokladnie...
proponujesz
to ja zaproponuje
po co $ile_znakow?? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) zmienna zbedna poza tym to jest srednia obiektowosc, ubranie funkcji w obiekt. Formularz to jedno Walidacja danych to drugie Co z tymi danymi robimy to trzecie... Formularz moze skladac sie z wielu obiektow.. kazde pole moze byc obiektem skladajacym sie z metod walidowania tego pola |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
przeoczylem te zmienna ale to mialem na mysli..
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 216 Pomógł: 0 Dołączył: 9.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Jasne,
Najprostrzy przyklad, twoja klasa "obsluga_formularza" jest odpowiedzialna za wyswietlenie DANEGO formularza, oraz metody do walidacji ma w sobie. Czemu? Pomysl lepiej nad obiektem formularza, ktory bedziesz mogl rozszerzac. Walidacja w formularzu? Zle zagranie. Walidacje powinienes trzymac w zupelnie innym miejscu - inna klasa? ktora bedzie zawierac zbior wszystkich metod walidacji czego zywnie sobie chcesz... Ludzie chcacy pisac obiektowo, piszac proceduralnie po prostu ubieraja zbior funkcji w obiekt... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Pomysl inaczej, Formularz to jakis obiekt ma napewno jakies wlasnosci - lista pol, akcja ktora stanie sie po submit, wczesniej walidacja danych, kazde pole ma przypisane do siebie sposob walidacji, moze nie miec walidacji, moze miec 1 sposob walidacji, albo kilka walidacji... Twojego przykladu nie da sie rozszerzac. W obiektowosci liczy sie to, ze dobrze napisane obiekty mozesz wykorzystac wiele razy, pozatym latwosc rozbudowy/przebudowy jest wielkim plusem OOP. Wszystko sklada sie z obiektow. Wiec obsluga_formularza powinna tez dzielic sie na wiele mniejszych obiektow. Chociazby lista pol, albo walidacje w klasie do obslugi formularzy. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Kod Najprostrzy przyklad, twoja klasa "obsluga_formularza" jest odpowiedzialna za wyswietlenie DANEGO formularza, oraz metody do walidacji ma w sobie.
formularz jest poza klasa dopiero po nacisnieciu submita jest wywolywana klasa. czyli "mowisz" ze formularz tez powinien byc w klasie??, a walidacja w innej?? dopiero zaczynam przygode z OOP i samo jej uzycie jest dla mnie malo zrozumiale Kod Twojego przykladu nie da sie rozszerzac w jakim sensie nie da sie go rozszerzac?? to co powinno tam jeszcze sie znajdowac?? Kod Wiec obsluga_formularza powinna tez dzielic sie na wiele mniejszych obiektow. Chociazby lista pol, albo walidacje w klasie do obslugi formularzy. nie kapuje dlaczego?? |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 4.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
czyli "mowisz" ze formularz tez powinien byc w klasie?? - nie
a walidacja w innej?? - tak
Ten kod pochodzi z OpenPowerTemplate - plik opt.components.php input type="text" - jest klasą input type="select" - jest kolejną klasą itd. czyli każdy "input" to osobna klasa a Twoja klasa mogaby się nazywać "Zend_Filter_Input" (zaglądnij do Zend-a). Za pomocą tej klasy możesz sprawdzić czy podany przez użytkownika email to faktycznie email, jeśli pytasz o wiek to czy to co podal użytkownik to napewno jest "int", czy nick ma minimum np. 5 znaków itd. Czyli wszystko osobno - każdy input = osobna klasa a walidacja w innej. Gdybyś swój formularz wstawil do do tej swojej klasy to miabyś klasę do obsugi tego konkretnego formularza a do kolejnego musiabyś stworzyć kolejną taką samą klasę która różnilaby się tylko ilością : input type="?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) " name="?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) " czyli jeśli w serwisie masz 10 formularzy musisz stworzyć 10 niemalże identycznych klas a tak masz zestaw konkretnych klas (elementów formularzy) i walidację w osobnej i czy w serwisie "XXX" czy "YYY" czy "ZZZ' ciągle korzystasz z tych samych klas nie musząc ciągle tworzyć nowych. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Kod Czyli wszystko osobno - każdy input = osobna klasa Kod klasę która różnilaby się tylko ilością : input type="?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) " name="?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) " a wczoraj jak zasypialem wpadlem na cos takiego ale jak znam zycie to pewnie to rozwiazanie nie jest wlasciwe i ktos je skrytykuje
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 216 Pomógł: 0 Dołączył: 9.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Powiem tak,
dla mnie piszac obiekt do oblugi formularzy chce, latwo tworzyc rozne formularze, dodawac walidacje, zrodla danych... Formularz to jeden obiekt, mam tez obiekty kazdego z typow pol - bo kazde pole jest inne... Mam Managera do tworzenia walidacji, Kazda walidacja jest przypisana do pola, po $_POST ida dane do formularza, obiekt jest tworzony, dane sa uzupelniane i walidujemy + wiemy ktore pola sa zle wypelnione. Proste... Nie tworz nowych metod dla roznych typow Pol... To jest ZLE. Chodzi w skrocie o to, ze jak w jednym projekcie bedziezs mial jakies tam typy pol, a w innym inny wyglad tych pol. To czemu masz modyfikowac klase formularzy? Szablony do tego zastosuj. W kolejnych projektach nie mozesz modyfikowac klasy formularza. Musisz dobudowywac do niej pewna funkcjonalnosc, ale samej jej nie mozesz modyfikowac. Narazie pracuje nad swoimi komponentami wiec wiecej nie moge powiedziec - bo jeszcze nie skonczone i nie przetestowane. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 169 Pomógł: 0 Dołączył: 27.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
zalozmy ze za pomoca describe table wygenerowalem sobie cos takiego w php
Field Type int(11) id char(50) tytul longtext tresc datetime data_dodania char(40) autor int(40) id_kat chcialbym napisac klase ktora na podstawie tych danych sama wygeneruje formularz do oblugi wybranej tabeli troche nad tym myslalem i zastanawia mnie obsluga pol przyklad: longtext tresc jak zaprogramowac klase zeby wiedziala ze polu longtext w formularzu odpowiada textarea Uzywanie if do kazdego typu pola w bazie danych mija sie z celem dlatego szukam jakiejs alternetywy Ten post edytował Dandelion 2.01.2007, 23:39:57 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
Cytat szukam jakiejs alternetywy switch ? (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif) |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 216 Pomógł: 0 Dołączył: 9.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Chyba troszke sie ograniczasz...
Pole int jak odwzorujesz? Bo moze to byc select box z wybraniem np: id kategorii, badz po prostu ilosc (textbox) Lepiej chyba sam stworzyc definicje ze pole takie typ - taki, pole inne typ - inny... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 18:07 |