article
Repository Pattern: separare il dominio dalla persistenza
Pillar article sul Repository Pattern: come creare un layer di accesso dati che isola la business logic dai dettagli del database.
Il problema: query SQL sparse ovunqueIn un progetto PHP che cresce, le query al database tendono a disperdersi: nel controller, nel service, a volte p...
02/05/2026
article
Singleton: il pattern piu odiato ha le sue ragioni
Pillar article sul Singleton Pattern nel framework: Database, EncryptionService, configurazione globale e quando un'istanza unica ha senso davvero.
Perche tutti odiano il SingletonNessun design pattern ha una reputazione peggiore del Singleton. "Stato globale mascherato", "impossibile da testare",...
26/04/2026
article
Quick note: ALTER TABLE nel DSL delle migrazioni
Quick note sulle operazioni ALTER TABLE aggiunte al Migration DSL: add, drop, rename column, indici e foreign key.
Modificare senza ricreareLe migrazioni iniziali creano tabelle da zero con Migration::table(). Ma i progetti reali evolvono: servono nuove colonne, in...
19/04/2026
article
Grammar multi-driver: una API, quattro dialetti SQL
Deep dive sul pattern Template Method applicato ai dialetti SQL: come una migrazione genera SQL corretto per MySQL, MariaDB, PostgreSQL e SQLite.
Il problema: SQL non e uno standard unicoSulla carta, SQL e uno standard. Nella pratica, ogni database parla il suo dialetto. MySQL usa i backtick per...
15/04/2026
article
Relazioni hasMany e belongsToMany in pratica
Pillar article sul trait Relation e le quattro tipologie di relazione supportate dall ORM.
Relazioni senza magiaIl trait Relation aggiunge ai modelli quattro metodi per definire relazioni: hasOne(), hasMany(), belongsTo() e belongsToMany(). ...
19/02/2026
article
Quick note: seed con rollback e status
Quick note sul sistema di seeding con tracciamento batch, rollback granulare e comando status.
Seeders che si possono annullareA differenza di molti framework dove i seeders sono fire-and-forget, qui ogni esecuzione viene tracciata con un numero...
28/12/2025