Jump to content
php.lv forumi

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


codez

Recommended Posts

  • Replies 58
  • Created
  • Last Reply

Top Posters In This Topic

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.

Link to comment
Share on other sites

  • 4 months later...

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

Link to comment
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]];
}

Link to comment
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
Link to comment
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 ...

Link to comment
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 .....

Link to comment
Share on other sites

  • 4 weeks later...
  • 3 weeks later...

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

Link to comment
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
Link to comment
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.

Link to comment
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.

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