Andiamo ora ad esplorare l'albero delle directory all'interno della sf_sandbox. Ecco la loro rappresentazione:
Directory | Sotto-directory | Descrizione |
---|---|---|
apps | Contiene una directiry per ciascuna applicazione del progetto (generlamente frontend e backend rispettivamente per il front-office e il back-office) | |
frontend | Front-office | |
backend | Back-office | |
cache | Contiene la versione "cachata" dell'applicazione e, se attivata, la versione di cache delle azioni e dei template del progetto. Serve per migliorare le prestazioni dell'applicativo web. | |
config | Contiene le configurzaioni dell'applicativo web sotto forma di file YAML, ed altri formati (.ini, .php, ecc. ecc) | |
data | Contiene i file relativi al database (schema, file .sql, database SQLite, ecc. ecc.) | |
sql | Contiene i file .sql | |
doc | Contiene la documentazione relativa al progetto | |
lib | Contiene librerie e classi esterne al progetto | |
model | Contiene le classi relative al modello ad oggetti del progetto. | |
log | Contiene i file di log generati direttamente da Symfony; può contenere anche file di log relativi al web server o al database o provenienti da qualsiasi parte del progetto. Symfony genera un file di log per ogni applicazione e per ogni ambiente. | |
plugins | Contiene i plug-in istallati nell'applicazione | |
test | Contiene i test unitari e funzionali scritti in PHP e compatibili con il framework di test di Symfony. Durante l'istallazione Symfony aggiunge automaticamente gli elementi necessari per alcuni test di base. | |
bootstrap | ||
unit | ||
functional | ||
web | È la directory principale per il web server. Qualisasi file accessibile da internet deve essere inserito in questa directory. | |
css | Contiene i fogli di stile. | |
images | Contiene le immagini. | |
js | Contiene file javascript. | |
uploads | Contiene i file inseriti dagli utenti. |
Un progetto Symfony è costituito da una serie di applicativi, contenuti ciascuno in un'apposita directory all'interno di apps, ciascuno dei quali è costituito a sua volta da uno o più moduli contenuti nella directory modules all'interno della directory del proprio applicativo. Inoltre questi moduli non sono altro che l'astrazione delle tabelle della base dati. Ad esempio: il progetto agenda può avere come applicazioni calendario e rubrica e quest'ultima può contenere i moduli nome e indirizzo.
Ogni elemento contenuto in un certo livello (ad es. il template del modulo indirizzo) eredita dell'omologo del livello superiore (template dell'applicativo agenda) ed è possibile, naturalmente, estendere e sovrascrivere gli elementi in esso contenuti.
Vale dunque la pena soffermarsi sulla directory apps che, al suo interno, contiene una directory per ogni applicazione del progetto (tipicamente frontend e backend però in fase di setup è possibile assegnare loro un nome diverso).
La sotto-directory dell'applicazione, a sua volta, contiene una struttura simile a quella riportata di seguito.
apps/ [nome applicazione]/ config/ i18n/ lib/ modules/ templates/ layout.php
- La directory config contiene i file di configurazione in formato YAML. In questa directory si trovano tutti i principali file di configurazione, a parte quelli dell'intero framework
- La directory i18n contiene i file per l'internazionalizzazione dell'applicazione come ad esempio il dizionario per la traduzione dell'interfaccia utente. È possibile comunque non utilizzare questo meccanismo per gestire il multilinguismo e affidare questo incaricio al database.
- La directory lib contiene classi e librerie specifiche per l'applicazione.
- La directory modules contiene tutti i moduli che caratterizzano l'applicazione.
- La directory templates contiene i template generali utilizzati da tutti i moduli dell'applicazione. Per default contiene il file layout.php che è il template nel quale vengono inseriti tutti i template dei vari moduli.
Andiamo ad esplorare ora una directory di un particolare modulo.
apps/ [nome applicazione]/ modules/ [nome modulo]/ actions/ actions.class.php config/ lib/ templates/ indexSuccess.php
- La directory actions generalmente contiene un solo file denominato action.class.php nel quale sono contenuti tutti i metodi del modulo. È anche possibile salvare altri metodi dello stesso modulo in altri file.
- La directory config contiene file per la configurazione specifica del singolo modulo.
- La directory lib contiene classi e librerie specifiche per il modulo.
- La directory templates contiene i template corrispondenti ai metodi del modulo. In fase di setup viene creato un template di default chiamato indexSuccess.php.