Interesanta diskusija par MVC
#1
Posted 2010.01.29 00:45
http://www.twitter.com/AleksejsZ
http://viednis.lv - jautājumi un atbildes pa tēmu
#2
Posted 2010.01.29 00:54
Tuvākajā laikā arī ķeršos klāt MVC praktizēšanai :) Pagaidām tik vairākus rakstus esmu lasījis.
Vienīgi, laikam sākumā mēģināšu pats savu mvc ietvaru izveidot, vismaz, lai rodas kāda sapratne no pamatiem, un saprotu ko īsti man vajag. Negribas uzreiz ņemt kādu gatavu ietvaru dēļ lielās "bagāžas" :(
#4
Posted 2010.01.29 17:54
marcis, on 2010.01.29 16:49, said:
Nu jā, codeigniter būtu manas izvēles augšgalā, pēc atsauksmēm :)
#5
Posted 2010.01.30 14:05
Nu, cik lasīju, controlieris ir kā sākumpunkts, kur visas kondīcijas atrunātas un attiecīgi tiek izsaukts modelis, kas iegūst datus no db un izsauc skatu, kas attēlo iegūtos datus.
Bet, kur notiek skata izsaukšana? Controlierī vai modelī? Domāju veidot kādu primitīvu ietvaru sev, un realizēt to taisos tā, ka ir controlieris, kas ir index fails, uz kuru visi pieprasījumi nāk, un attiecīgi, es nosūtu uz atbilstošo modeli (piem, raksts, galerija, viesugrāmata), kur arī atkarībā no citiem padotajiem datiem notiek loģika, datu iegūšana no db. Tad no modeļa attiecīgi parādu skatu.
Vai esmu sapratis pareizi?
#6
Posted 2010.01.30 14:17
#7
Posted 2010.01.30 14:43
Kaklz, on 2010.01.30 14:17, said:
Tātad, kontrolieris apstrādā datus, un izsauc no modeļas kaut kādas attiecīgās metodes, vai tur dzēst, pievienot utt (nu modelis pats par sevi satur pamatā funkcijas)?
#8
Posted 2010.01.30 15:01
Kontrolieris pasaka ko darīt, ko renderēt. Modelis dara visu ar datu manipulācijām (saglabā DB, veic pārveidojumus). Skats, dara ko jau skati dara :)
class ArticleController extends Controller {
public function index() {
$this->articles = Article::all();
render_template("index");
}
public function create() {
$this->article = new Article($_POST);
$this-article->create();
redirect_to(ROOT_PATH);
}
}
This post has been edited by rATRIJS: 2010.01.30 15:01
#9
Posted 2010.01.30 18:10
view - html - izveido objekta vizuālo noformējumu, kuru vai nu echo (directly vai indirectly) vai return atpakaļ, lai to echo kāda cita funkcija. view funkcijas inputā saņem datus no modeļa. tipa modelī bija SELECT, un šo mysql result tgd padod view, lai tas sabāž datus html tagos. turklāt vieniem un tiem pašiem datiem var būt vairāki view
controller - centrālā loģika, kas apvieno/izmanto abus model & view. pieņem lēmumu, ko darīt ar pašreizējo request (un dara tā :D)
lūdzu, palabojiet/precizējiet, ja es kļūdos, jo es patiesībā neesmu izlasījis teoriju, kas ir mvc :D (kr4 es šito tikai mācos)
es šo pašu ideju realizēju procedurāli bez oop. koda organizēšana moduļos (līdzīgas funkcijas, kas specializējas uz savu darbu) jau no tā nemainās...
This post has been edited by 2easy: 2010.01.30 19:02
#10
Posted 2010.01.30 21:11
briedis, on 2010.01.30 14:05, said:
tā arī var darīt. galvenais funktieris visā tajā ir izveidot applikācijas arhitektūru tā, lai tev pašam būtu ērti strādāt. un tu varētu efektīvi veikt izmaiņas, izstrādāt, uzturēt, etc. vnk vajag uztaisīt pietiekami noderīgas funkcijas, kuras vari pielietot atkārtoti. piemēram, modeļa funkcija, kas selektē produktu sarakstu/katalogu pēc dažādiem filtriem. šādu funkciju var izsaukt gan frontend, gan cms, lai saņemtu vajadzīgos datus. šajā gadījumā ieguvums ir tāds, ka sql ir centralizēts. tb sql selekti nav izmētāti pa visiem failiem kur nu kurais, bet atrodas modelī. līdz ar to šādu applikāciju ir vieglāk uzturēt un ieviest tajā izmaiņas. pēc līdzīga principa taisa arī view funkcijas. ja kādus datus vajag parādīt, tad tam ir speciāla funkcija. un ja kkur citur to pašu vajag parādīt tad izsauc šo funkciju, nevis kopē to pašu html/php vēl kādā failā. thats it. so simple! :))
protams, tur vēl var būt visādas nianses, bet vismaz pamatpricincipi tiešām ir that simple
mvc ir tikai viens veids, kā to darīt. taču tas nenozīmē, ka tas ir vienīgais un pareizākais un labākais. tas vnk ir krutāk nekā tad, ja tev vsp nebūtu nekāda applikācijas uzbūve. mvc fani tūlīt man bruks virsū par to, ka atļaujos atzīt alternatīvu viņu reliģijai :D but im rdy! ;)
#11
Posted 2010.01.30 23:42
Kādi būtu "pret" apgalvojumi?
Par būtu, ka nebūtu vēl viens papildus fails, pa kuru būtu jārakājas, lai saprastu, kas notiek...
#12
Posted 2010.01.31 00:05
savukārt ja vienas un tās pašas moduļa & kontroliera funkcijas ieliek vienā failā, tad web applikācijas arhitektūra pēc būtības vsp nemaz nemainās. vnk fiziskie moduļi (faili) kļūst par loģiskajiem moduļiem (viena faila daļām). tāpēc vien no tā uzreiz nekāds mīnuss nerodās. jāskatās kāda ir visa applikācijas uzbūve kopumā, lai novērtētu vai tas ir pluss vai mīnuss
P.S.
pēc būtības visa šī cīņa ir tikai ap to, kā sakonkatenēt stringu no <html> līdz </html> (ok, no doctype līdz </html>) un pēc tam to outputot (echo). jo weblapa ir vnk strings!!! tik vnkārši :)) (kas gribēs piesieties, varēs pateikt, ka ir arī images,css,js un citi ārējie resursi) viss grozās ap to, kā šo stringu iegūt un kā savākt datus, ko tajā iebāzt. + vēl arī izpildīt objekta pamatdarbības pievienot/mainīt/dzēst (form post). lai šīs vnkāršās lietas izdarītu, tiešām nevajag domāt sazin kkādas super mega arhitektūras. kiss
This post has been edited by 2easy: 2010.01.31 00:20
#13
Posted 2010.01.31 01:01
Moš rīt sapakošu un iedošu uzmest aci, kas man te sanācis. Gribētu kādu kritiskāku vārdu uzklausīt ;)
#15
Posted 2010.02.01 22:35

Help












