Struttura di un progetto semplice che realizza tutte le funzionalità CRUD

In questo progetto, rispetto alla versione plain che potrebbe fare le stesse cose, è stata inserita un po' più di struttura, in particolare:

  • un file di configurazione, config.php, che contiene le informazioni di configurazione comuni a tutte le pagine, in questo esempio i parametri di connessione al database. In questo repository è presente un file config.example.php che non contiene dei dati veri ma solo un esempio per capire come funziona: ovviamente i segretissimi dati veri che permettono l'accesso al database non si vuole che vengano versionati.
  • una classe, Connection, che si occupa di leggere le informazioni di connessione ed espone un metodo statico, getInstance, che può essere utilizzato in qualsiasi parte del codice per recuperare una connessione funzionante al database. Nel caso la connessione non fosse possibile verrà lanciata un'eccezione.
  • una classe che rappresenta il Model, che in questo esempio è una lista di impegni. Questa classe, TodoRepository, astrae il Controller da dover accedere direttamente al database, permettendogli invece di chiamare dei metodi statici per effettuare l'operazione che interessa, ad esempio avere una lista di tutti gli impegni esistenti nel database. Tutto il codice SQL è isolato qua dentro, permettendo ipoteticamente di modificare la fonte dei dati, sostituendo il database o addirittura utilizzando una forma di memorizzazione diversa (file, database non relazionali, ...) senza che il controller ne venga impattato.
  • il controller in questo esempio è il solo file index.php, che verifica il tipo di azione che l'utente vuole effettuare, effettua le operazioni necessarie e restituisce la pagina con il risultato dell'azione scelta dall'utente.
  • come già visto negli esercizi precedenti, il controller utilizza un template, in questo caso crud.tpl, per separare la View dal resto del codice.