Digest di glug, Volume 47, Numero 14

CoD cod@fsfe.org
Mer 18 Apr 2007 17:15:43 CEST


PREMESSA: rispondo a questo thread lasciando il nome originale cosi
capiamo a chi sto rispondendo... per chi volesse leggerselo, il topic
intero sta sotto il nome di "deliri tecnoillogici" ;)

a3tius ha scritto:
> Nessuno ha disprezzato il tuo lavoro. 

Si' si' tranquillo, mica me la sono presa... ci vuol altro per
offendermi! ^__^

> Mi sembrava e un po' lo era, che l'argomento fosse OT.

Beh che devo dire... era MOLTO OT!
...ma a chi potevo raccontare un delirio di programmazione? Siete le
uniche persone che mi capiscono... :P

> Capisco che software AMP funzionino in maniera abbastanza slegata dal SO e te ne 
> do' atto. A quel punto però non credo che utilizzino file ini. Insegnami 
> il contrario e per me basterà.

Uhm... ok ci provo... o meglio provo a spiegarti cosa sto facendo...
temo che saro' un po' prolisso.

Innanzitutto ho scelto di utilizzare i files ini per due motivi:
1) php gestisce i files ini fin dalle prime versioni, tramite la
funzione parse_ini_file
2) se il secondo parametro di parse_ini_file  e' true posso ottenere un
array bidimensionale.

Pensa che bello, un file ini tipo questo:

[sezione1]
parametro1 = "valore"
parametro2 = "valore"

[sezione2]
parametro1 = "valore"
parametro2 = "valore"

Diventa con una sola istruzione un array bidimensionale:

$pippo['sezione1']['parametro1'] = "valore";
$pippo['sezione1']['parametro2'] = "valore";
$pippo['sezione2']['parametro1'] = "valore";
$pippo['sezione2']['parametro2'] = "valore";

"Ma perche' hai bisogno di files di configurazione?" mi chiederai tu...
Ecco perche'!

Avendo io creato un sistema per generare siti web dinamici, dovevo per
forza inserire qualche file di configurazione che spiegasse al motore
come acquisire certe funzionalita'.

Ma faccio prima a farti degli esempi:
http://www.disclic.unige.it/certem
http://www.disclic.unige.it/facilefle
http://publifarum.farum.it/
http://incipit.farum.it
Questi sono alcuni dei siti creati con il mio sistema.

Tutti questi siti hanno funzionalita' diverse: il sistema base tutto
sommato e' solo un'enorme piattaforma per il lavoro collaborativo a
distanza.

Publifarum ad esempio e' una rivista online: nell'area riservata ci sono
funzioni di scrittura articoli, correzione di bozze e un sistema per
assemblare e pubblicare le varie uscite della rivista.

Facilefle invece e' un archivio di risorse informatiche per chi deve
insegnare la lingua francese ai non francesi: nell'area riservata gli
utenti iscritti hanno la possibilita' di inserire un nuovo sito, di
recensirlo e di gestire e moderare i commenti lasciati dai visitatori.

Certem e' un centro ricerche (tra l'altro il sito e' il piu' simile come
layout al futuro sito di alid) e ha una gestione di news che gli altri
siti non hanno.

Invece che modificare il codice di DOMUS (e' il nome del sistema) per
aggiungere queste funzioni, ho fatto in modo che caricasse delle
librerie esterne (scritte da me) e acquisisse nuove funzionalita' in
maniera.. uh.. odio il termine ma potremmo dire quasi "plug and play"

La lista delle librerie da caricare e' contenuta in un file di
configurazione.
Certo, ci sono dei sistemi per far fare la scansione di una directory a
php e fargli caricare i files che trova... ma voi vi fidereste ad avere
un sistema cosi' su un server? Io preferisco dargli A MANO la lista dei
files da caricare tramite un bel file statico... ;)

Inoltre grazie al file di configurazione posso usare delle librerie wrapper!

Ecco un bell'esempio dall'ini del sito di ALID:
[usr]
path =  "lib_usr.mysql.php"
alwaysload =  "yes"

[news]
path =  "lib_nws.mysql.php"
alwaysload =  "yes"

Il sistema carica le librerie che gli servono sulla base del valore
contenuto in $lista_librerie['nome_libreria']['path']
Se un domani ALID decidesse di utilizzare un database... che so...
oracle, basterebbe mettere sul server le librerie
lib_usr.oracle.php
lib_nws.oracle.php
e cambiare il percorso delle librerie nel file ini.

Non ci sarebbe bisogno di andare a caccia di ogni funzione di chiamata
al database all'interno del codice: il sistema e' modulare. Togli un
modulo e ne metti un altro e lui si adatta.

Per tenere assieme tutti questi moduli, pero', mi occorrevano davvero
dei files di configurazione, e vista la leggerezza con cui php li
gestisce ho pensato che gli INI avrebbero fatto al caso mio.

Certo... un file xml che mi permettesse di annidare un po' di piu' le
cose non mi dispiacerebbe... ma ci lavorero' in seguito.

Spero di aver risposto alla tua domanda... no, davvero: ho risposto o
sono partito per la tangente? :o

> Un abbraccio :)

Ricambio :)


Claudio


Maggiori informazioni sulla lista glug