daGrevis Posted June 13, 2011 Report Share Posted June 13, 2011 Scenārijs tāds: Es veidoju autorizācijas sistēmu (ielogošanās, izlogošanās, reģistrēšanās utml.). Lūk ir kontroleris, kuram ir metode action_signUp(). Šī metode attiecīgi izsauc validācijas objektu un pārbauda visu, kas pirms tam tika atsūtīts no formas (CSRF tokens, garums lietotājvārdam, īsums parolei, izskats e-pastam utml.). Ja kaut kas nav kā vēlos, tad tiek parādīti "error'i"; ja, tomēr, viss ir labi... izsaucam modeļa metode, piemēram, signUp(), kas nokešo paroli un ar "Query builder'a" palīdzību ieliek jaunos datus datubāzē. Viss strādā! Viss mierīgi un labi. Tad Man pateica, ka validācija ir jāsadala gan pa kontroleri, gan pa modeli. Tad, maģiskā veidā, ja tomēr vienā no tiem ir kāds validācijas "error's", visus "error'us" savākt un parādīt. Scenārijs #2, pirmais cēliens: Es pēc divarpus mēnešiem izdomāju, ka gribu kontroles-paneli. Tur izdomāju izveidot "lietotāju menedžeri", kuram viena no iespējām ir pievienot jaunu lietotāju (no turienes kā adminam). Tā kā Mēs visi mīlam DRY filozofiju... šis te viss ir jāpadara "re-usable". Kāpēc gan neizmantot veco-labo metodi no tā modeļa? Nu lūk. Tad laikam kāds ir izdomājis, ka vajag izmantot arī veco validāciju... bet tā kā, iespējams, ne visa validācija, kas bija vecajā kontolerī, ir vajadzīga... sākās problēmas un te Es beidzu saprast par to, ko runāju. Vai tā vajag darīt? Vai tā vajadzētu darīt? Ja jā, tad kā? Quote Link to comment Share on other sites More sharing options...
Rincewind Posted June 13, 2011 Report Share Posted June 13, 2011 >>Tad Man pateica, ka validācija ir jāsadala gan pa kontroleri, gan pa modeli. Ja vienkārši pateica un nekādi nepamatoja - droši ignorēt. Nav viena superpareiza veida kā dalīt kodu starp modeļiem un kontrolieriem. >>ka vajag izmantot arī veco validāciju... bet tā kā, iespējams, ne visa validācija, kas bija vecajā kontolerī, ir vajadzīga Yii šādos gadījumos izmanto modelim mainīgo scenario, katram var izveidot savādākus validācijas rūļus. Citos freimworkos gan jau ka ir līdzīgi. Quote Link to comment Share on other sites More sharing options...
daGrevis Posted June 13, 2011 Author Report Share Posted June 13, 2011 Skaidrs. Būtu jauki, ja te daudzi Savas doma izteiktu... Quote Link to comment Share on other sites More sharing options...
Rincewind Posted June 13, 2011 Report Share Posted June 13, 2011 Piebilde. No pieredzes - labs kods ir īss, saprotams un viegli lasāms bez komentāriem (ja man kaut kur sanāk kaudze ar ieliktiem nosacījumiem vai garas rindas ar daudziem operatoriem utt, uzreiz zinu ka neesmu visu kārtīgi izdomājis). Aptuveni novērtē vai koda sadalīšana starp modeli un kontrolieri saīsinās un novienkāršos kodu, ja jā tad pārraksti. Quote Link to comment Share on other sites More sharing options...
daGrevis Posted June 13, 2011 Author Report Share Posted June 13, 2011 Novienkāršos? Nē. Padarīs kodu nedaudz vairāk izmantojamu? Jā. Quote Link to comment Share on other sites More sharing options...
Faks Posted June 13, 2011 Report Share Posted June 13, 2011 Ieteikums godīgi sakot domāt ir labi bet vel labāk ir to uz papīra uzīmet vai uzrakstīt ko vēlies un sākt veidot un pakāpensiki attīstīt faktiski ! Privāts Stāsts no savas praktikas un ikdienas kura iet vel :) Es sāku rakstīt savu cms motoru bāzējoties uz tīra papīra lokses un idejām šadi ari vis top un pakāpesniski attīstās tālāk tas ari vis patlaban ir diezgan padarīt platforma ir pāri pa 60% pabeigta un galvenās fukncijas faktiski lielākā daļa ir uztaisītas tāka vis iet protams vienam pašam viegli neies daudz skēršļu būs bet tieši tāpec ari to sauc par pieredzi un to labo Seno frāzi No Kļudām Mācāmies bet tiekas neko nedara neko neiemācas jo kļudas nerada jo tikai gaisā mētājas :) tāka vēlu teu veiksmi :) ! Quote Link to comment Share on other sites More sharing options...
daGrevis Posted June 14, 2011 Author Report Share Posted June 14, 2011 Ko, lūdzu? Kādu pāpīru? Es labi zinu, ko vēlos panākt. Quote Link to comment Share on other sites More sharing options...
rpr Posted June 14, 2011 Report Share Posted June 14, 2011 teorētiski, ja neesi fw izstrādātājs, tad kotrolierī līst nevajadzētu. Quote Link to comment Share on other sites More sharing options...
daGrevis Posted June 14, 2011 Author Report Share Posted June 14, 2011 Nē, Tu ko smagi jauc. Tas ir MVC. Kas ir MVC? Model-View-Controller, kur Tu mainot šos trīs komponentus iegūsti aplikāciju, kas ir viegli pārvaldāma. Nevajadzētu līst "system" mapītē, kura satur sistēmas klases, bet tā vietā, ja vajag, Es tās varu izmainīt Savām vajadzībām (ar "extends" atslēgvārdu). Quote Link to comment Share on other sites More sharing options...
codez Posted June 14, 2011 Report Share Posted June 14, 2011 Šādiem gadījumiem labi noder Strategy paterns. Tev teiksim ir validācijas funkcija vai klase, kur par parametriem nodod nevis datus, bet gan algoritmus kopā ar parametriem. Precīzāk tev ir abstrakta klase Validation_Method, kura nosaka kā jāizskatās validācijas metodes klasei. Tālāk tev ir klase Validator, kura māk validēt datus, izmantojot klases, kuras būvētas uz Validation_Method pamata. Validācijas metodes savukārt class Validation_Email extends Validation_Method{ } Tālāk, validācija aptuveni Validator::validate($data, new Validation_Email($options1,$option2)); Ja tev pēkšņi vajag nedaudz uzlabotu email validātoru, kurš pārbauda papildus parametrus, bet iepriekšējo kodu negribi mainīt, un gribi izmantot jau esošo, vienkārši papildini Validation_Email klasi. class Validation_Email2 extends Validation_Email{ } un izmanto Validator::validate($data2,new Validation_Email($option1,$option3,$option4)); Šādā veidā tev nevajadzēs iejaukties ne Validator klasē, ne esošajās Validation_Email klasē, kuru jau izmanto citās koda daļās, tai pašā laikā tu varēsi izmantot jau esošos Validation algoritmus, tos ekstendojot un pieliekot vajadzīgo funkcionalitāti. Quote Link to comment Share on other sites More sharing options...
codez Posted June 14, 2011 Report Share Posted June 14, 2011 bet tieši tāpec ari to sauc par pieredzi un to labo Seno frāzi No Kļudām Mācāmies bet tiekas neko nedara neko neiemācas jo kļudas nerada jo tikai gaisā mētājas Ir tāds teiciens: Muļķis mācās no savām kļūdām, gudrs - no citu. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.