Newsgroup: it.comp.www.php
Titolo: [semi ot?] - Organizzare i file di un progetto

Chiedo scusa se vado ot.
 
Sto iniziando un nuovo progetto (non destinato alla vendita) ma vorrei 
evitare la "confusione" nella quale mi ritrovo, puntualmente, a fine lavoro.
 
Mi spiego.
 
In partenza ho un'idea che col tempo poi si modifica etc... tutto questo lo 
"vedo" in come sono organizzati files e dir nella mia root.
 
Domada: esiste un metodo per organizzare meglio i files dei propri progetti?
 
Ho dato uno sguardo alla dirtree di wordpress o joomla ma chiederei a chi ne 
sa più di me se c'è una metodologia, preferibile da seguire.
 
Grazie in anticipo. 
 
 

Dipende dal tipo di progetto che vai a realizzare...
Per progetti medio/piccoli (tipo siti internet vetrina dei negozi) lo puoi strutturare così:
 
/
/css    -> per i file css
/lib    -> per i file che contengono le classi php
/images -> immagini del progetto
/js     -> per i file javascript
config.php
 
 
Nel file config ci saranno tutte le impostazioni di base quale:
- percorso locale es. /home/content/sito/
- percorso remoto es.  
www.sito.it
 
- user e password del database
ecc...
 
da qui si fanno le include per le librerie e variabili che metterai nella cartella /lib
 
 
In ogni file del progetto basterà fare una include a config.php e avrai tutto ciò che ti serve per il progetto (variabili, classi ecc...)
 
Questo metodo va bene per progetti piccoli perchè non ci saranno molti file, ma per quelli grandi ci si può trovare in problemi di ridondanza dei dati o appesantire troppo il caricamento della pagina in quanto richiama tutte le librerie e file che magari certe volte non servono.
 
Ovviamente il progetto è strutturato con php ad oggetti (php 5.2 e superiori).
 
 
E' un uso che faccio io, non deriva da standard o tecniche di grandi progetti open source ecc...
(sistema basato su hosting linux)
 
Spero esserti stato d'aiuto.

 progetti?
 
Purtroppo l'unica risposta possibile e` che l'esperienza te lo insegnera`.
Dipende dal progetto, dalle dimensioni di quando parte e dalle dimensioni 
di quando arriva.
Solitamente se usi un framework ti adatti alla struttura che ti propone 
lui. Io di solito faccio qualcosa di simile a quello che fa ZendFramework 
(scusa per le righe vuote, servono a evitare che pan scassi la struttura):
 
/web    (<- qui punta il VirtualHost di Apache)
 
 +- css
 
 +- js
 
 +- img
 
 +- data
 
 +- (altro: swf, pdf, ecc.)
 
 +- index.php
 
 +- .htaccess
 
/app
 
 +- config
 
 +- lib
 
 +- data
 
 +- logs
 
 +- modules
 
 
In /web vanno tutte le parti "pubbliche", ma non le pagine vere e proprie 
in HTML/PHP. L'htaccess e l'index.php servono a richiamare le pagine che 
sono in /app
 
Se ho tanti moduli posso anche usare qualcosa tipo /web/[nomemodulo]/css 
e /web/[nomemodulo]/js, ecc.
 
In /app c'e` tutto il succo dell'applicazione. /app/lib contiene le 
classi di base (quelle che, teoricamente, non dovrei modificare tra un 
progetto e l'altro. Roba tipo elaborazione di immagini, astrazione dal DB, 
ecc.)
 
/app/data contiene i dati "privati" (per esempio file che l'utente puo` 
scaricare solo con password, e che quindi vengono serviti da uno script 
PHP)
 
/app/logs contiene i log dell'applicazione (non quelli del webserver). 
Per esempio per il debug.
 
/app/modules contiene l'applicazione, divisa in moduli. Per esempio /app/
modules/news/... o /app/modules/prodotti/...
 
Come organizzi il contenuti di questa cartella lo decido in base al 
progetto. Se e` ZF uso il suo standard:
 
/app/modules/prodotti/
 
 +- controllers
 
 +- views
 
 +- models
 
 +- forms
 
Altrimenti vario (e a volte sperimento). In questo periodo sto testando 
una struttura cosi`:
 
/app/modules/prodotti
 
 +- Admin.php    (controller)
 
 +- Admin        (views del controller Admin)
 
      +- index.php
 
      +- edit.php
 
      +- delete.php
 
ecc. ecc.
 
Bye.

 di quando arriva.
 
Già... è questo che mi frega. :)