Dev Log - Settimana 2: Coerenza del database, MVC, sistema di Form dinamici
Il lavoro di questa settimana è stato intenso, tecnico e fortemente orientato alle fondamenta. Mi sono concentrato su tre pilastri principali che stanno plasmando la nuova struttura interna del modulo: consistenza dei dati, un motore MVC personalizzato e un sistema di Form completamente dinamico.
Integrità dei dati: vincoli e trigger
Una parte significativa del lavoro di questa settimana è stata dedicata a migliorare l'affidabilità dei dati direttamente a livello di database.
Ho introdotto un sistema coerente di vincoli di chiave esterna e trigger SQL per garantire uniformità e correttezza tra tutte le tabelle. Questo assicura che ogni operazione, sia proveniente da WHMCS stesso che dal modulo, resti coerente, sincronizzata e automaticamente validata al livello più basso possibile.
Si tratta di una scelta progettuale di alto livello che previene le inconsistenze prima ancora che raggiungano la logica applicativa, e che ora rappresenta una parte integrante delle fondamenta del modulo. In parole semplici, eliminando una fattura vengono automaticamente rimossi non solo i dati memorizzati nelle tabelle standard di WHMCS, ma anche quelli correlati archiviati nel modulo Katamaze. Niente più record orfani e script scritti appositamente per gestirli.
Struttura MVC
Parallelamente, ho costruito il motore che regola come tutti i dati e la logica vengono trasmessi al frontend (template Smarty e oltre).
In termini più semplici, ho creato l'architettura interna che mi consente di sviluppare le pagine e le interfacce del modulo utilizzando un vero approccio Model-View-Controller (MVC). Questo mi permette di ottenere:
- Una chiara separazione tra logica e presentazione
- Un flusso di dati automatico e prevedibile
- Gestione uniforme di variabili, traduzioni e rendering
- Un ambiente strutturato per scalare le interfacce future in modo efficiente
È un motore completamente personalizzato (leggero, automatico e tecnicamente preciso) che rende ogni parte del modulo robusta e facilmente evolvibile. Per chiarire, l'architettura MVC è già presente nei miei moduli attuali, ma quando li sviluppai per la prima volta, ai tempi di WHMCS v5, non esisteva un modo semplice o pulito per implementarla, quindi dovetti ricorrere a qualche workaround piuttosto "hackish".
La classe Form dinamica
L'altro grande traguardo di questa settimana è la creazione della classe Form, che genera dinamicamente ogni elemento di input utilizzato all'interno delle interfacce del modulo. Questo sistema è in grado di costruire automaticamente:
- Campi di testo, password e hidden
- Textarea e file uploader
- Checkbox e radio button
- Color picker e selettori di data/ora
Tutto è completamente dinamico e multilingua, direttamente all'interno dei template Smarty, dove posso generare qualsiasi input semplicemente richiamando la classe Form e passando i parametri rilevanti (tipo, nome, valore, opzioni ecc.).
Non è necessario scrivere manualmente codice HTML. La classe gestisce coerenza, struttura e attributi, consentendomi di scrivere meno codice e sviluppare molto più velocemente.
Uno degli esempi migliori di questa flessibilità è il date picker. Specificando il tipo di input e pochi attributi, la classe Form genera automaticamente un selettore di data completo e interattivo, con intervalli predefiniti opzionali (es. Ultimi 7 giorni, Questa settimana / Scorsa settimana, Quest'anno / Scorso anno).
Lo stesso vale per i datetime picker, dove è possibile selezionare non solo la data ma anche ore, minuti e secondi. Anche qui posso definire rapidamente preset basati sul tempo (es. Ultimi 5 minuti, Ultime 3 ore, Ultime 12 ore).
Tutti i preset, gli intervalli e i vincoli sono completamente configurabili, rendendo l'interfaccia utente potente e intuitiva, pur mantenendo una rigida coerenza interna.
Perché è importante
Questi progressi non riguardano solo la comodità: rappresentano un profondo miglioramento architetturale.
Ogni interfaccia, dalle schermate di configurazione ai pannelli di visualizzazione dei dati, sarà ora costruita su questo framework pulito, modulare e multilingua. Ciò garantisce la stessa affidabilità, uniformità e manutenibilità in tutto il sistema.
Naturalmente, una classe simile esiste già nei miei moduli attuali, ma come per l'MVC, fu originariamente creata per WHMCS 5 e si basa ancora su codice "hackish" necessario a far funzionare le cose nel vecchio ambiente.
Prossimi passi
La prossima settimana mi concentrerò sul completamento degli ultimi dettagli della classe Form, assicurandomi che ogni tipo di input e caso limite siano pienamente coperti.
Una volta terminato, passerò al livello di rappresentazione dei dati, iniziando dalle strutture tabellari e integrandole (probabilmente) con DataTables per dataset dinamici, ordinabili e ricercabili.
Commenti (0)