Jump to content
php.lv forumi
Sign in to follow this  
codez

Kā uzrakstīt vienkāršu MVC Framework-u

Recommended Posts

Izdomāju paprovēt uztaisīt vienu vizitkarti uz šī FW (domāju, ka šo var saukt par FW). Nu viss smuki, protams, nācās pielabot pāris funkcijas (renderJS, piemēram), daudzās lietas bija jāpieliek, bet viss pārējais diezgan gludi un ātri. Ideāli der tiem, kas provē apgūt MVC, autoram respect par to, ka diezgan daudz ir jāslīpē, savadāk būtu kārtējais web site in 5 minutes.

Share this post


Link to post
Share on other sites

Būtībā labāk būtu, ja visi php koda faili atrastos ārpus publiski pieejamās mapes un tāpat arī visi neatrastos vienā mapē, bet būtu sakartoti, piemēram, pa controllers, libs, models mapēm.

 

Taka no Mvc es neko nesaprotu un man root mapē ir bardags grūti pārskatīt vai nepateiktu, jo es nevaru atrast kur jāmaina lai viss būtu pa mapītēm

Share this post


Link to post
Share on other sites

tas kādu failu lādet, ja klase nav atrasta, nosaka Core klases metode:

 

  public static function autoload($c){
   require_once Core::classFile($c);
 }

 

kurā izsauc ielādēt failu ar nosaukumu, kuru atgriež tās pašas klases metode:

 

function classFile($c){
 $ext=array('C'=>'ctrl','H'=>'hctrl','M'=>'mdl','L'=>'lib');
 return strtolower(substr($c,1)).'.'.$ext[$c[0]];
}

 

Ši funkcija strādā tā, ka, ja tu pieprasi piemēram klasi CHome, kas būtu kontroleris home klasei, tad izveido faila nosaukumu šādi

nogriež pirmo burtu, iegūst "home", tam pievieno "." un no masīva atbilstošo paplašīnājumu pēc pirmā burta "ctrl" - kopā "home.ctrl"

Ja mēs gribam, lai tas viss atrodas citās mapēs, tad mēs varētu izveidot mapju masīvu, kur katra tipa klasei būs sava mape.

 

$dir=array('C'=>'ctrls','H'=>'ctrls','M'=>'mdls','L'=>'libs');

 

Tālāk mēs gribam, lai, piemēram, CHome klases fails būtu ctrls/home/home.ctrl

 

izveidojam, lai šī metode uzģenerē šādu stringu:

 

function classFile($c){
 $ext=array('C'=>'ctrl','H'=>'hctrl','M'=>'mdl','L'=>'lib');
 $dir=array('C'=>'ctrls','H'=>'ctrls','M'=>'mdls','L'=>'libs');
 $name=strtolower(substr($c,1));
 return $dir[$c[0]].'/'.$name.'/'.$name.'.'.$ext[$c[0]];
}

Share this post


Link to post
Share on other sites

  function runController($n){
   if (file_exists($n.'.ctrl')) {
     $m='C'.$n;
     $ctrl=new $m();
     return $ctrl->run();
   } else {
     return ($n!='notfound')?$this->runController('notfound'):'';
   }    		
 }  

uz

 

 

function runController($n){

   if (file_exists('ctrls/'.$n.'/'.$n.'.ctrl')) {
     $m='C'.$n;
     $ctrl=new $m();
     return $ctrl->run();
   } else {
     return ($n!='notfound')?$this->runController('notfound'):'';
   }    		
 }  	


 

un kā var definēt tilte ?

Edited by goma smile

Share this post


Link to post
Share on other sites

Atvainojos pa dubble post :)

 

Bet man ienāca pa 3 kollonām ... Tātad ...

 

 

1 ir tas kur viss mainās ....

 

2,3 sistēma ir tāda patiesībā tāda pati kā css un js failiem .... tātad no ir links users .. tātad root direkcija ir papka side iekš side left, right un piemēram, ja vienā no viņiem ir tas side fails users.ctrl tad viņš nomaina a ja nav tad iet defoulta kaut kāds ...

Share this post


Link to post
Share on other sites

Ko tu tur murgo ?!

 

Kur tu redzi kaut kādas kolonas?

Kas ir "links users", "papka side" , "side fails" un kas ir tas "viņš", kurš "nomaina" un "iet defoulta" ??

 

Vai tu spēj teikumu latviski uzrakstīt ?

Share this post


Link to post
Share on other sites

No šī topika šis kaut kā negāja.... un man ienāca prātā ideja

 

 

 

Piemēram tu atver caur browseri sadaļu http://links.lv/users ..... un kad tu atver to sadaļu tev pārbauda kaut kādā papkā vai nav otra kollona

 

sfpjvrd7u8omh2l2ja.jpg

 

 

un velviena iespēja ka pa vissu lapu ir tikai 1 kollona piemēram forumam .....

Share this post


Link to post
Share on other sites

Interesanta lasāmviela.

 

Kas patika - reāli viena posta ietvaros atšifrēts MVC, iztiekot bez tukša bla bla bla.

 

Kas nepatika - stils (prefiksi, dīvainie paplašinājumi un baidīšanās no normālas formatēšanas.

Share this post


Link to post
Share on other sites

oooho, kā jau m8t teica: Ouch.. Šo visu izlasot sapratu, ka nesaprotu neko par PHP

man kā tādam iesācējam daudz un dikti neskaidrības. Piemēram kā būtu jārīkojas, ja man ir textarea`s un es pēkšņi gribu sākt izmantot kādu texta editoru? Kas tas skaitītos? Plugins? Addons? Kas cit? Un kā notiktu šī editora instalācija? Kā vispār core vai kas cits zin, ka jāizmanto editors, jo textarea`s ir vairākas.. Sapinās nedaudz domas, netieku skaidrībā..

 

Sorry, ja ne gluži pa tēmu jautāju..

Share this post


Link to post
Share on other sites

Ezi,

Textarea editors parasti ir pliks js, kuru var ielikt www mapes js mapē. Kā tad izpaužas iekļaušana? Vajadzīgajā templeita/skata failā iekļauj ar parastu html'u - <script src="/js/tinymce/tinymce.js" ...> kaut vai.

 

Var jau definēt arī php funkcijas, jeb helperus, kas to html izvadīs tavā vietā.

Edited by briedis

Share this post


Link to post
Share on other sites

Nū par to arī es gribēju pārliecināties, ka nepietiek vnk uztaisīt parastu pluginu un tad tik corei pateikt, ka viņu izmantos, bet vajag arī manuāli šo to pierakstīt.. Man visu laiku domas klīst par to Freimu daudzfunkcionalitāti utml.

Share this post


Link to post
Share on other sites

Tas kas tur parādīts ir (diezgan kreiss) mvc framework'a skelets.

Parasti kaut kam tādam arī taisa tos visus pluginus/addonus, lai pievienotu papildus funkcionalitāti.

( tikai core parasti gan neaiztiek )

 

Iesaku tev nedaudz palasīt netā par to, kas ir frameworki, ko ar tiem dara un kā tos taisa.

Share this post


Link to post
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...
Sign in to follow this  

×
×
  • Create New...