Jump to content
php.lv forumi

Interesanta diskusija par MVC


Aleksejs

Recommended Posts

  • Replies 53
  • Created
  • Last Reply

Top Posters In This Topic

Jēj, paldies :)

 

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" :(

Link to comment
Share on other sites

Vienu lietu es nevaru saprast - kā īsti atškiras kontrolieris no modeļa.

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?

Link to comment
Share on other sites

Kontrolieris ir tas, kas apstrādā ievaddatus un izdomā, ko darīt tālāk - Kādus modeļus tieši darbināt un vai vispār ir nepieciešams rādīt kādu skatu, vai, piemēram, vienkārši izveikt redirektu uz citu lapu.

Link to comment
Share on other sites

Kontrolieris ir tas, kas apstrādā ievaddatus un izdomā, ko darīt tālāk - Kādus modeļus tieši darbināt un vai vispār ir nepieciešams rādīt kādu skatu, vai, piemēram, vienkārši izveikt redirektu uz citu lapu.

 

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)?

Link to comment
Share on other sites

Jup :)

 

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);
}
}

Edited by rATRIJS
Link to comment
Share on other sites

model - sql - izpilda darbības ar objekta datiem: SELECT,INSERT,UPDATE,DELETE. hmm, tā kā dati var būt arī bilde, tad tomēr sanāk, ka modeļa pārziņā ir ne tikai db, bet arī failu sistēma

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...

Edited by 2easy
Link to comment
Share on other sites

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.

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! ;)

Link to comment
Share on other sites

vai tas ir mīnuss vai pluss, tas ir subjektīvi, bet ja "biznesa loģika" vai vnk konkrētā objekta loģika (darbības ar datiem) inputu ņemtu pa tiešo no interfeisa, tb no $_GET/$_POST, nevis no modeļa funkcijas argumentiem, tad tā vnk būtu mazāk modulāra. tas arī viss

 

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

Edited by 2easy
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...