evo nekoliko principa organizacije projekta sa kojima sam se susretao i koji su mi ok. Sa nekima i radim svakodnevno.
Potpuno modularni sistem
Code:
/admin/index.php --admin specific logika
/class/ --mesto za generalne klase, mailere, adodb, smarty, seo, config, validacija...
/modules/ --mesto gde svaki modul drzi svoje fajlove, tako da se lako dodaju/brisu moduli, samo se ceo folder doda
//pojedinacni moduli:
/modules/banner/admin/index.php --admin logika za taj modul
/modules/banner/class --objekti koji cine taj modul, handleri za objekte modula
/modules/banner/templates --templejti module, public i admin
/modules/banner/images --slike koje taj module koristi, ikonica za admin meni, neke specificne za public
/modules/banner/css
/modules/banner/translations --prevodi labela modula
/modules/banner/js --specificni js za taj modul,
/modules/banner/sql --sql za instalaciju i deinstalaciju modula
/modules/baner/index.php --public logika modula
/themes/ --teme celog sajta
/uploads/ime_modula --svi uploadi kroz aplikaciju
/scripts --js i css generalnog dela
/config.php
index.php --public related logika
drugi inspirisan zend frameworkom koji je malo manje modularan po strukturi, jer su svi moduli dinamicki kontrollisani iz baze. Imaju svoje prednosti (brzinu) i imaju ogranicenja po neka, jer svi koriste iste resurse pa je malo tricki menjati nesto. naravno, posto nasledjuju generalni objekat, samo se dopise metoda i svi moduli pice kako njima odgovara.
Code:
/www/index.php --folder kome se pristupa iz browsera, svi ostali fajllovi su skriveni u folderu ispod www root-a
/www/scripts/ --svi jsovi, editori i css fajlovi sajta, podfolder po temama
/logic/ admin.php i public.php --specificna logika za admin ipublic
/logic/admin/ (/public/) --svi kontroler fajlovi za logiku sajta (tu se ustvari pozivaju metode objekata, recimo users_log.php, category_log.php)
/class/ --sve klase koje se koriste na sajtu
/templates/ --svi templejti sajta, uglavnom imenovani po modulima, pod folder sa nazivom teme
Gornji princip instalira odredjeni modul veoma lako, samo se copy-paste folder iz repository, kroz superadmin se instalira i poveze se menijima, a donji princip ne moze tek tako da instalira nov modul, vise se menja po bazi recimo nego po fajlovima, fajlovi se dodaju na puno razlicitih mesta pa je zaista tricky. iako mislim da bi se nakon malo ulaganja u instalciju modula, slicno moze postici i donjim principom.
Takodje je dobra Aleksandrova preporuka, skini neki projekat i vidi kako tamo organizuju to, i tako pici. Mozes procitati i zend framework jer tamo dobro opisuju organizaciju zasto i kako. nemoras da je usvojis, ali ces imati ideju. Naravno, probaj nesto da menjas po kodu, cisto da imas uvid u to kako to zaista radi i gde je sta, sto se funkcionalnosti tice.
A jos bolje bi bilo da nadjes nekog mentora koji ce to da ti objasni uzivo i na nekom primeru ;)
AKo te zanimaju konkretniji delovi aplikacija, ti pisi.
Pogledao sam tvoj kod, i sad pricam o organizaciji.
U oba ova slucaja gore se koristi fuze-in-box metoda, tj sve ide kroz jedan index.php fajl, hvataju se neka podesavanja pa se posle logika grana prema potrebama.
Znaci url koji kaze /index.php?module=blog vodi na taj blog, /index.php?module=blog§ion=post_new grana do dela koji prikazuje formu. U tvom slucaju:
index.php
Code:
//uvuci neke config parametre, konekciju na bazu, definisi konstante sajta (napravi neki BASE_PATH, potrazi forum cemu sluzi), naziv, seo, menije, najcesce koriscene funckije itd.
//switch koji odredjuje koja logika sajta je trenutno aktuelna (koji modul se koristi)
switch (get[module]){
//razni casovi, tj moduli
case "kontakt" :
//require kontakt logika
break;
}
kontakt_log.php
Code:
//neka podesavanja za trenutni modul, seo, selektovani meni, naziv sajta itd
//switch sekcije modula
switch (section){
default:
case "post_form"
//akoje forma submitovana, ubaci je u bazu
if (post-hiddenField==1){
//znaci forma ima neki hidden field kojim znamo da je forma submitovana
//obradimo i ubacimo kontakt u bazu ili posaljemo na mail
//ako je sve ok, redirektujemo na hvala stranicu, ako nesto ne valja, samo pustimo kod dalje koji ce da prikaze formu
}
//izvadis templejt i prikazes ga korisniku. ako nesto ima u postu, prosledis to templejtu, tako da ako je nesto pogresno uneo, naprivmer email format, ostala polja ce mu biti sacuvana
break;
case "hvala_na_kontaktu"
//prikaze se obavestenje da je forma poslata
break;
}
Ovo je kratko kratko, ako te zanima ovakav pristup ili nesto iz njega, pisi.