Jump to content
php.lv forumi

par moduļu bāzētu dzinēju


bra

Recommended Posts

sveiki man ir kātrējais jautājums.

Bieži gadās ka šu tur ir nepieciešams veikt dažādas iamaiņas pievienojot kādu papildu f-ciju vai izmainot esošo vai arī kādu noņemt nost ( es biju domājis pašdefinētu fciju), Tātad mans jautājums ir kā būtu jāvaido šāda tipa dzinējs - moduļu mazēts (piem kā WordPress) man pašam radās ideja samaikot DB vienu tabulu, tur sarakstīt visu infu par katru moduli atseviņški, bet to struktūru arī nevarēju išti izštukot jo ir jāperedz iespējami daudz iespējas. Tā pa miglu atceros ka Jāzeps bija kaut ko tamlīdzīgu satasījis, bet laikam tagad tas viis ir pie dieviem. kā jūs parasti veidojat šādas sitēmas?

Paldies jau iepriekš

Link to comment
Share on other sites

bra: a vai nav labāk nevis glabāt moduļu informāciju iekš MySQL, bet gan iekš pašu moduļu php failiem. Tipa, vienā direktorijā samet visus moduļu php failus, tad kad vajag pieslēgt tos, tad uztaisi ciklu ar include katru no failiem, un, piemēram, katrs no failiem atgriež masīvu ar sevis aprakstošu informāciju, ko arī galvenā programma izmanto, tipa:

<?php
  $module_info["name"] = "Krutais modulis";
  $module_info["version"] = "1.0";
  $module_info["description"] = "kautko dara";

  // tālāk seko vispārējas funkcijas vai klases...
?>

Tādējādi, kad uztaisīsi include šo moduli, varēsi izmantot šo $module_info masīvu, un, kad vajadzēs pieslēgt nākamo moduli, tad vienkārši uztaisi unset($module_info); (protams, iepriekš saglabājot tā informāciju, kur citur, ja nepieciešams), un slēdz klāt nākamo moduli.

Link to comment
Share on other sites

varbūt ne pietiekoši pareizi izteicos bet paldies me bija domājis arī struktūru, kādam vajadzētu izskatīties, vai kā jūs tasat vai tasītu pašu kernrli (kodolu) šādam dzinējam, tas ko es biju izštukojis galīgi nekam nederēja. tā pati iedeja ir teiksim ir webloga dzinējs, kur var pielikt noņemt (deaktivizēt) kādu moduli piemēram komentāru moduli, vai linku moduli un tas sasaucas i ar user daļu i ar admin daļu. Man nav ideju kur skatīties piemērus, zinu ka Wordpresam tāds laikam ira, bet tas kods priekš iesācēja ir biku par saražģitu... :huh:

Link to comment
Share on other sites

Pareizi un lai aizpildītu masīvu $module_info[] , ir lietderīgi savākt info no datubāzes :)

14133[/snapback]

Tu acīmredzami neizprati manu ideju. Doma ir tāda, ka $module_info ir definēts pašā modulī - php skriptā, un datubāze te vispār netiek iesaistīta!
Link to comment
Share on other sites

ņu, pieņemsim, ka ir tāds modulis kā kalendārs. uztaisam tam failu "calendar.php"

 

tālāk bloga rāmī ieplānojam vairākas vietas, kur to var ielikt, piem. masīvā

 

$cal_places=array('pa labi augšā','pa labi vidū','pa labi lejā');
un kaut kā settingos saglabājam, piem. $cal_place=0;

un tad att. vietā
<div align="right">
<div id="top">
<?php
if ($cal_place==0)
include_once 'calender.php';
?>
</div>
<div id="middle">
<?php
if ($cal_place==1)
include_once 'calender.php';
?>
</div>
<div id="bottom">
<?php
if ($cal_place==2)
include_once 'calender.php';
?>
</div>
</div>

 

mīnusi - daudz jāmocās lai visu atcerēties, modulim jāstrādā neatkarīgi jebkurā vietā (t.i. lai piem. "nesalauž" esošo kvēriju), kodā daudzas vietas kur jāliek moduļu iespējamo vietu kods

pluss - modulis izpildās tikai tad, kad tam jāizpildās

 

otrā pieeja - template elements

 

kaut kur pašā augšā
ob_start();
//šeit izehojam kalendāru
$tpl['calendar']=ob_get_clean();

ob_start();
//šeit iszvadās viss (X)HTMLs, kur kaut kur ievietots &calender&

//pašās beigās:
$html=ob_get_clean();

foreach($tpl as $key=>$val)
$html=str_replace('&'.$key.'&',$val,$html);

echo $html;
flush();

 

mīnusi - viss htmls izvadās tikai skripta beigās (ok, var taisīt replace kaut kur pa vidu, bet tas atkal sarežģī)

plusi - viegli nomainīt izvietojumu, var savietot ar paštaisītu kešingu, ja att. modulis nav ieslēgts, tad &moduļa_nosaukums& nomainām pret '' un miers

Link to comment
Share on other sites

Tu acīmredzami neizprati manu ideju. Doma ir tāda, ka $module_info ir definēts pašā modulī - php skriptā, un datubāze te vispār netiek iesaistīta!

14139[/snapback]

 

Es sapratu Tavu ideju, bet doma par datubāzi, lai moduļus varētu administrācijā viegli aktivizēt/deaktivizēt, pielikt parametrus utt...

Link to comment
Share on other sites

ņā, bet būtībā ja izmanto kādu no dotajiem venom piemēriem jāparedz jau kādi moduļi būs, bet teiksim par to pašu kalendāru es tagad uztasu webloga dzinēju un par to kalendāru nemaz nedomāju un pēc teiksim nedēļas pēkšņi izdomāju ka ma tagad tādu te vajag tad iekopēju teiksim calendar.php un uztasu DB lai piemēram varētu katram datumam varētu pielikt vārdadienas, tad kad šisto viu esmu izdarījis, man iekš admin paneļa pie moduļiem parādas calendar - active/ not active, labi tas vel būtu viegli, bet itkā jau varētu calendar.php sākumā izmantot bubu ideju labi tas būtu oki. bet man problēmas sagādātu tieši paša kerneļa uztasīšana t.s. lai nolasa visu failus no monules diras un tad samet iekš DB skākuma ar lauka status vērtību not active vai kā tā, bet vai tas nepaildzinātu ielādi ja katru reizi jālasa visi faili no tās diras un tad vel jāčeko no DB vai šis active vai notactive? vai vispār kāds ir ko tamlīdzīgu tasījies? ja ir moš varētu kādu koda parugu palūgt lai vieglāk pašam izštukot... :huh:

Link to comment
Share on other sites

kaut ko ūber sadomājis (:

 

ar to moduļu lasīšanu - skaties readdir/opendit piemēru manuālī, vai pameklējis tepat forumā - piemēru kaudzēm

 

att. uz jauno moduļu detektēšanu: saglabā un pārbaudi moduļu direktorijas mainīšanas laiku (ja tiek pievienots fails - tā mainās? vai vismaz notoucho to)

ko turpmāk arī čekosi, resp.

 

@include 'lastmoduled.php';

if (!isset($updated))

$updated=0;

 

if (filemtime('./modulu_dirs/') !=$updated)

{

//nolasām failus, pieņemsim, ka tajā faili sauksies "modula_nosaukums".php

//salīdiznām, vai modula_nosaukums eksistē iekš db, ja nē - pieliekam

ierakstām lastmoduled.php saturu

'<?php $updated='.filemtime('./modulu_dirs/').'; ?>'

}

 

 

tālāk tik un tā jāmaina vai nu php, vai html (template) koda līmenī, bē

Link to comment
Share on other sites

zinu ka Wordpresam tāds laikam ira, bet tas kods priekš iesācēja ir biku par saražģitu

 

Taadas lietas nevar uztaisiit vienkaarshi, ar triis rindinju skriptu :) taa pati par sevi ir sarezgjiita lieta :) taaka manuaalji, php.net un google.lv un viss buus chikeniekaa :)

Link to comment
Share on other sites

nu jopcik!

nav moduļu sistēma sarežģīta nu nav!!!

bubu un Venom parādīja ideālu piemēru.

 

princips gaužām elementārs:

 

sataisam visas standarta funkcijas sev, definīcijas, inclūdojam visas klases utt bla bla viss kas būs nepieciešams dzinēja darbībai, un tad ņemam cauri moduļus vai nu no foldera vai caur mysql (bet includes tāpat sanāk.. dooh). un viss.

kas tur ir tik sarežģīts??

metam tik klāt moduļus un aidā!

Link to comment
Share on other sites

×
×
  • Create New...