Questa sezione tratta i principali concetti che sono alla base della piattaforma GlisWeb.
Il primo concetto fondamentale da comprendere è la distinzione fra parte standard e parte locale del framework. GlisWeb infatti è organizzato in modo che gli sviluppatori possano ridefinire la maggior parte del framework stesso a seconda delle esigenze della specifica implementazione che stanno realizzando. Nella maggior parte dei casi questo si tradurrà nella definizione di valori diversi per alcune variabili; ma volendo è possibile riscrivere anche singole funzioni o intere librerie. Ovviamente più massiccie saranno tali riscritture "locali" del framework più approfondita sarà la conoscenza richiesta del framework stesso per effettuarle.
La parte "framework" è facilmente identificabile per il fatto che il nome di tutte le sue componenti nel filesystem (fatta eccezione per i files speciali, come ad esempio i files .htaccess) inizia per underscore. Ad esempio il file _src/_config.php è parte del framework mentre src/config.php è la sua controparte locale.
Per utilizzare il framework in una pagina php è necessario includerlo. L'inclusione e l'esecuzione del framework sono effettuate a partire dal file _src/_config.php che va incluso all'inizio della pagina stessa, ad esempio:
Questo è il file più semplice che possiamo costruire nel framework GlisWeb. Le variabili $cf['folders']['levels'] e $cf['folders']['page'] vengono inizializzate in quanto occorrono al framework stesso per funzionare; dopodiché viene incluso il framework vero e proprio tramite l'istruzione require.
Riguardo alle due variabili di cui sopra, come si può vedere la prima è immediatamente necessaria per la costruzione del percorso di inclusione del file _src/_config.php; questo opera implicitamente un controllo di correttezza sul valore della variabile stessa, infatti essendo utilizzata per includere il framework se il suo valore è errato questo non viene neppure incluso e quindi non c'è modo di avviare il framework con un valore errato nella variabile $cf['folders']['levels'].
Riguardo invece alla variabile $cf['folders']['page'], si può vedere che è utilizzata come parametro per la funzione buildPage() la quale effettua la renderizzazione dell'output della pagina. Dettagli su questo punto si trovano nella documentazione della funzione buildPage() e dei files di configurazione.
Il secondo concetto da assimilare prima di iniziare a lavorare con GlisWeb è il fatto che la piattaforma è strutturata concettualmente come una matrice. GlisWeb infatti è suddiviso in moduli, i quali sono a loro volta organizzati in sezioni. I moduli raggruppano le funzionalità della piattaforma in blocchi che possono essere attivati e disattivati a seconda delle necessità.
Le sezioni rappresentano i gruppi di caratteristiche e specifiche tecniche che compongono i moduli; possono essere viste come una suddivisione orizzontale rispetto ad essi che forma dunque una matrice intersecandoli. Questa struttura è rappresentata all'interno del framework dall'array bidimensionale $cf['mods'], come illustrato nella documentazione del file _src/_config.php.
| sezione | descrizione |
|---|---|
| debug | debug della piattaforma |
| session | gestione delle sessioni PHP |
| site | configurazione generale della piattaforma |
| performances | monitoraggio e settaggio delle performances della piattaforma |
| filesystem | gestione del filesystem e dei files |
| commons | impostazioni generali |
| localization | localizzazione della piattaforma |
| mysql | gestione e utilizzo di db MySQL |
| mssql | gestione e utilizzo di db MSSQL |
| auth | autenticazione utenti |
| user | gestione e configurazione utenti |
| cache | gestione e configurazione della cache |
| rewrite | gestione e configurazione dell'url rewriting |
| pages | configurazione e contenuto delle pagine della piattaforma |
| templates | templates delle pagine della piattaforma |
Il terzo concetto realmente essenziale da tenere presente nell'utilizzo di GlisWeb all'interno di un progetto web è il modo in cui la piattaforma gestisce i files principali che la compongono (comunemente si fa riferimento a questi files con il termine "files di configurazione", ma è abbastanza riduttivo). In particolare, questi vengono inclusi, e quindi eseguiti, in un ordine specifico che rispetta la struttura a matrice del framework suddivisa in moduli e sezioni.
L'inclusione di questi files, che corrisponde in larga parte all'esecuzione stessa dello script, è organizzata in step successivi, ad ognuno dei quali sono associate determinate caratteristiche e funzioni. Per esempio, allo step 010 la connessione al database non è ancora disponibile, in quanto viene effettuata generalmente attorno allo step 120 (dipende da quale db utilizzate). Comprendere questi step è essenziale per collocare il proprio codice in quello giusto, in modo che disponga delle risorse necessarie e al tempo stesso non comprometta gli step successivi.
La gerarchia del file system della piattaforma rispecchia l'organizzazione interna del codice. Inizialmente è utile prendere confidenza con le cartelle del framework in modo da potersi muovere agilmente fra di esse quando si inizia a realizzare la propria implementazione.
| cartella | descrizione |
|---|---|
| _mods | contiene i moduli del framework, uno per cartella; il nome delle cartelle corrisponde alle chiavi di $cf['mods'] |
| _mods/*/_src | contiene il codice del modulo |
| _mods/*/_src/_config | contiene i files di configurazione del modulo |
| _src | contiene il codice del framework base |
| _src/_ajax | contiene pagine che possono essere chiamate in Ajax (webservice, ecc.) |
| _src/_bin | contiene frammenti di codice che vengono inclusi nel corso dell'esecuzione del framework |
| _src/_config | contiene i files di configurazione del framework base |
| _src/_lib | contiene le librerie del framework base |
| _src/_templates | contiene i templates standard del framework, uno per cartella |
| _var | contiene files vari non necessari al funzionamento del framework |
| _var/_docs | contiene le pagine extra della documentazione del framework |
| _var/_pages | contiene pagine statiche di default del framework |
| _var/_version | contiene i files informativi relativi alla versione corrente |
| mods | cartella locale corrispondente a _mods |
| src | cartella locale corrispondente a _src |
| tmp | contiene i files temporanei del framework |
| var | cartella locale corrispondente a _var |
| var/docs | contiene la documentazione del framework |
| var/docs/html | contiene la versione html della documentazione del framework |
| var/log | contiene i files di log del framework |
L'esecuzione del framework è organizzata in tre grandi blocchi consecutivi (inclusione librerie, inclusione files di configurazione, render della pagina) come mostrato nello schema seguente. All'interno di ogni blocco vengono eseguiti degli specifici sottoinsiemi di operazioni anch'essi riportati in forma generale nello schema.
Il database MySQL standard del framework comprende le tabelle necessarie al modulo base. Ogni modulo opzionale ha un suo schema aggiuntivo collegato a quello del modulo base.
1.8.1.2