MVC könyvtárstruktúra
Az elmúlt hetekben volt szerencsém megismerni néhány MVC struktúrával szervezett nyílt forrású alkalmazást. Ennek hatására úgy döntöttem, hogy egy kicsit átalakítom a saját keretrendszeremet.
Van azonban két olyan kérdésem, gondolatom, amiben megerősítésre várok, kérlek segítsetek!
A könyvtárstruktúra így néz ki (ascii order nélkül):
és itt akadtam el, a következők miatt:
1.) Hova tegyem a css fájlokat és az egy-egy nézethez tartozó egyed js fájlokat? Logikusan a view részei, azon belül pedig egy-egy alkalmazásé. Ha például van egy site és egy blog az alkalmazás rendszerben, akkor a könyvtárak kinyitva ehhez hasonlítanak:
Ez így jó lehet?
2.) Ha user tud fájlokat feltölteni, azokat hova tegyem? Ha mondjuk az előző alkalmazás rendszer kiegészül egy filemanager-vel, akkor:
Ez így jó lehet?
Várom a véleményeiteket, köszönöm!
s_volenszki
■ Van azonban két olyan kérdésem, gondolatom, amiben megerősítésre várok, kérlek segítsetek!
A könyvtárstruktúra így néz ki (ascii order nélkül):
/models
/views
/controllsers
/library
/locale/
/views
/controllsers
/library
/locale/
és itt akadtam el, a következők miatt:
1.) Hova tegyem a css fájlokat és az egy-egy nézethez tartozó egyed js fájlokat? Logikusan a view részei, azon belül pedig egy-egy alkalmazásé. Ha például van egy site és egy blog az alkalmazás rendszerben, akkor a könyvtárak kinyitva ehhez hasonlítanak:
/models
/site
/blog
/views
/site
/css
/js
/blog
/css
/js
/controllers
/site
/blog
/site
/blog
/views
/site
/css
/js
/blog
/css
/js
/controllers
/site
/blog
Ez így jó lehet?
2.) Ha user tud fájlokat feltölteni, azokat hova tegyem? Ha mondjuk az előző alkalmazás rendszer kiegészül egy filemanager-vel, akkor:
/models
/site
/blog
/filemanager
/views
/site
/css
/js
/blog
/css
/js
/filemanager
/css
/js
/userfiles
/username_1
/images
/docs
/username_2
/images
/docs
/username_3
/images
/docs
/controllers
/site
/blog
/filemanager
/site
/blog
/filemanager
/views
/site
/css
/js
/blog
/css
/js
/filemanager
/css
/js
/userfiles
/username_1
/images
/docs
/username_2
/images
/docs
/username_3
/images
/docs
/controllers
/site
/blog
/filemanager
Ez így jó lehet?
Várom a véleményeiteket, köszönöm!
s_volenszki
pubic
Jól jársz, ha kialakítasz egy "public" mappát is. A webszerveren keresztül kívülről csupán ez a mappa legyen elérhető, így elkerülsz egy csomó későbbi problémát. A mappa tartalmazza az index.php-t, mint egyedüli bemenetet.
Ebből a megközelítésből már logikusan látszik, hogy a publik szekcióban kell helyet foglalniuk a statikusan kiszolgálandó elemeknek. Így persze sérül egy egészen kicsit a modulok egysége. Ha mindegyik rendelkezik saját css-el például, akkor is javaslom, hogy azokat egy wrapperen keresztül szolgáld ki, ha már nem megoldható a különcsomagolásuk.
Feltöltött fájlok:
Ha közvetlenül kell elérni őket, a megoldás adott: public/downloads. Ha nem, akkor pedig a vonatkozó kontroller szolgálja ki őket id alapján a downloads/uploads könyvtár alól, mely nem része a public-nak.
Ha jól értem ez mondod nekem.
models/
site/
blog/
filemanager/
views/
site/
blog/
filemanager/
controllers/
site/
blog/
filemanager/
usr/
htdocs/
site/
css/
js/
blog/
css/
js/
filemanager/
css/
js/
userfiles/ (ha direktben kell elérni a file-okat)
username_1/
images/
docs/
username_2/
images/
docs/
username_3/
images/
docs/
Logikusnak tűnik, ha erre gondoltál.
Igen, bár fordítva
Szerintem egyéni ízlés megközelítése, hogy tematikusan, vagy modul szerint rendezzük mappába a fájlokat, ha neked ez áll kézre, használd így. Csak vigyázz, később lehet, hogy egy modul több controllert vagy modellt fog használni, és akkor nem lesz már ilyen egyszerű megtalálni a párját.
Ez mit is jelent pontosan?
Azt értem, hogy egy modul több controller-t vagy model-t használ, azt azonban nem, hogy nehéz lesz megtalálni a párját.
Mire gondolsz pontosan?
Célszerű lenne a model-eket, view-kat és controller-eket egy-egy könyvtárban tárolni és nem modulonként? Valahogy így:
models/
...ide összes model
views/
..ide összes view
controllers/
...ide összes controller
usr/
htdocs/
site/
css/
js/
blog/
css/
js/
filemanager/
css/
js/
userfiles/ (ha direktben kell elérni a file-okat)
username_1/
images/
docs/
username_2/
images/
docs/
username_3/
images/
docs/
pontatlan voltam
Jogos
Köszönöm a segítségedet!