Massaboutique, Martina Franca (Taranto)

massaboutique, abbigliamento, moda, fashion, luxury

Il lavoro per Massaboutique è cominciato in un momento in cui era in corso l’aggiornamento del sito www.massaboutique.com. Il primo step è stato quello di aiutare lo sviluppatore a terminare il lavoro in corso inserendo delle nuove funzionalità e migliorando l’interfaccia utente rendendola più user friendly. Il sistema era sviluppato in PHP4 in maniera procedurale, erano state introdotte delle classi che fungevano come “gestori” per le varie entità del sito ma non una vera e propria architettura e non una vera programmazione ad oggetti. L’inclusione di file come alternativa al richiamo di metodi di classe rendeva difficile la modifica non essendoci information hiding, incapsulamento, nè riciclo del codice.

Ad aggiornamento ultimato il mio compito è stato quello di ricreare tutto il sito partendo da zero ed utilizzando un architettura e delle tecniche che permettessero una più facile manutenzione ed evoluzione. In precedenza codice di livello logico, query al database e codice HTML erano totalmente mischiati all’interno del codice. Inoltre anche gli aspetti di CSS e JavaScript non erano gestiti bene in quanto vi era un unico file CSS che conteneva gli stili di tutto il sito ed un file che conteneva tutti gli script JS con uno switch che ne selezionava la sezione corretta.

L’architettura utilizzata per il rifacimento è stata quella a 3 livelli. Partendo dalla struttura del database ho iniziato creando tramite uno script PHP le classi che rappresentavano le entità e le relazioni del sistema ovvero le tabelle del database . Successivamente, sempre tramite uno script, ho creato i Data Access Object per la gestione dell’accesso ai dati ed il popolamento delle classi base. Infine ho creato il livello di Business partendo dall’urlManager, ovvero da quel componente che funge da dispatcher e si occupa del riconoscimento degli url, della loro traduzione nelle 7 lingue, ecc.. Successivamente sono passato a creare gli altri componenti per il controllo dei prodotti, dei clienti, del carrello e così via.

In parallelo con la creazione dell’architettura backend ho iniziato a creare la parte di frontend utilizzando una struttura che permettesse di associare automaticamente ad ogni url una pagina PHTML, un foglio di stile, uno script JavaScript ed un file di traduzione PO. Sono stati inoltre creati degli oggetti JavaScript per la gestione dei componenti e dei metodi fondamentali per il sito. Un oggetto è stato riservato all’inizializzazione dei form con jquery.validate e jquery.ajaxForm e dei componenti come tabs o accordion e sono stati creati dei metodi per una più semplice gestione dei popup, degli alert personalizzati e per le richieste Ajax. A tal proposito è stata inserita una API in grado di fornire alle richieste Ajax la possibilità di interrogare i componenti del livello business in maniera simile a quella delle JSF.
Sono stati inoltre inseriti all’interno del codice dei logger in modo da monitorare le operazioni effettuate da ogni utente. I log sono stati suddivisi per giorni e sessioni, un logger per le query del database e uno per la registrazione delle operazioni. Per velocizzare l’elaborazione è stato inserito un meccanismo di cache in modo da diminuire gli accessi al database per quelle informazioni con una frequenza di modifica molto bassa. Inserendo un parser di file PO è stato possibile gestire in maniera semplice ed intuitiva le traduzioni dei testi all’interno del codice tramite la creazione di una funzione e($msgid, $msg) che non solo restituisce la stringa tradotta in caso già esista ma crea una nuova entry all’interno del file di traduzione nel caso questa non ci sia! Ciò rende possibile inserire i testi direttamente nel codice HTML sapendo che il file PO di traduzione verrà creato e aggiornato in automatico. Alla fine della creazione ci saranno già tutti i file di traduzione pronti per essere tradotti.