logo

Extra Block Types (EBT) - Nuova esperienza con Layout Builder❗

Extra Block Types (EBT) - tipi di blocchi stilizzati e personalizzabili: Slideshows, Tabs, Cards, Accordion e molti altri. Impostazioni integrate per sfondo, DOM Box, plugin javascript. Vivi oggi il futuro della costruzione dei layout.

Demo moduli EBT Scarica moduli EBT

❗Extra Paragraph Types (EPT) - Nuova esperienza con Paragraphs

Extra Paragraph Types (EPT) - insieme di moduli basati su paragrafi in modo analogo.

Demo moduli EPT Scarica moduli EPT

Scorri

1.3. Costruiamo il nostro framework PHP

07/10/2025, by Ivan

Esistono molti modi diversi per costruire un framework. Alcuni preferiscono framework molto complessi, altri invece puntano sulla semplicità. In questa serie di articoli costruiremo un framework semplice da usare e da comprendere.

Gli articoli ti aiuteranno a sviluppare il tuo framework personale, diverso da quello che creeremo per il nostro negozio online, ma che potrai facilmente ampliare per creare progetti più grandi. L’obiettivo principale di questa serie è imparare a costruire un proprio framework per qualsiasi CMS.

Pattern di progettazione

Per sviluppare un framework vengono utilizzati vari pattern di progettazione. Un pattern rappresenta una soluzione collaudata e riutilizzabile per risolvere problemi comuni nello sviluppo software. In questo progetto useremo i seguenti pattern:

  • Model-View-Controller (MVC)
  • Registry
  • Singleton

Model-View-Controller (MVC)

MVC è la base del nostro framework. Questo pattern consente di separare l’interfaccia utente dalla logica dell’applicazione. La View (interfaccia utente) interagisce con il Model (dati) attraverso un Controller, che contiene la logica di business necessaria per gestire i dati del modello.

Ad esempio, quando un utente clicca su “Aggiungi al carrello” nella vista, il controller gestisce la richiesta e interagisce con il modello del carrello, aggiungendo il prodotto. Il modello restituisce poi i dati aggiornati, come il numero di articoli nel carrello, e il controller aggiorna la vista.

MVC

Nel nostro framework utilizzeremo l’architettura MVC e potremo ampliarla in futuro. I dati saranno gestiti nei modelli e memorizzati nel database. Le tabelle del database corrisponderanno alle proprietà dei modelli, quindi la loro struttura sarà coerente. Possiamo quindi estendere la nostra rappresentazione MVC includendo anche la fase finale: la visualizzazione nel browser.

MVC scheme

Registry

Il Registry fornisce un modo per conservare una collezione di oggetti del framework. La necessità di un registro nasce dall’astrazione introdotta dal pattern MVC. Ogni controller e modello (come prodotto, carrello, pagina) deve eseguire alcune operazioni comuni, tra cui:

  • Gestire le query al database
  • Verificare se l’utente è autenticato
  • Passare dati alla View (gestione dei template)
  • Inviare email (ad esempio, dopo un acquisto)
  • Interagire con il file system (ad esempio, caricare immagini dei prodotti)

La maggior parte dei framework gestisce queste operazioni tramite oggetti dedicati. Il registro consente di memorizzare questi oggetti in un unico punto e di accedervi da qualsiasi parte del framework. Inoltre, gli oggetti nel registro possono interagire tra loro: ad esempio, il gestore dei template può comunicare con il gestore dei file o il sistema di invio email con i template di posta.

MVC

Singleton

Il Singleton è uno dei pattern più semplici da comprendere. Il suo scopo principale è garantire che esista una sola istanza di una determinata classe. In genere si utilizza quando è necessario avere un solo oggetto condiviso in tutta l’applicazione, accessibile globalmente.

Un esempio classico è la connessione al database: ne serve una sola, ma deve essere accessibile da tutto il framework.

Struttura generale

Il passo successivo nella costruzione del nostro framework è pianificarne la struttura. Dobbiamo creare una struttura che includa:

  • Modelli
  • Viste (con la possibilità di utilizzare diversi stili o temi)
  • Controller (organizzati in cartelle separate per ciascun modulo)
  • Controller amministrativi (per la gestione dei contenuti da parte di admin o moderatori)
  • Registro
  • Oggetti del registro
  • File caricati (uploads)
  • Librerie esterne
  • Altri file e risorse varie

Tenendo conto di tutto ciò, la struttura delle cartelle del nostro framework sarà la seguente (utilizziamo nomi in inglese, come è consuetudine in PHP):

  • Models
  • Views
    • View A
    • Templates
    • Images
    • JavaScript
  • Controllers
    • Controller A
      • ControllerA
      • ControllerAAdmin
  • Registry
    • Objects
    • Database objects
  • Assets
  • Uploads
    • Da ampliare quando aggiungeremo prodotti e immagini!
  • Libraries
  • Miscellaneous