Blog PHP

CodeIgniter 4: rilasciata la nuova versione del framework PHP

  • Home
  • Blog PHP
  • CodeIgniter 4: rilasciata la nuova versione del framework PHP

CodeIgniter 4: la nuova versione del framework PHP

Tra i framework PHP basati sul paradigma MVC (model-view-controller) ce n’è uno che era finito un pò nel dimenticatoio specialmente dopo l'uscita del più giovane e moderno Laravel. Stiamo parlando di CodeIgniter, un framework leggero e performante ma che non è rimasto al passo coi tempi.

La buona notizia è che dopo 5 anni di sviluppo é stato finalmente rilasciato CodeIgniter 4, versione che si distacca in maniera netta dal passato (versioni 2 e 3) introducendo alcune delle buone pratiche di programmazione adottate da framework come Symfony e Laravel.

Per la cronaca Codeigniter 4 è stato rilasciato il 24 febbraio 2020 in onore del leader del progetto Jim Parry, deceduto il 15 gennaio 2020.

Il seguente grafico denota una certa curiosità degli sviluppatori PHP a seguito del rilascio ufficiale di CodeIgniter 4

Statistiche Packagist CodeIgniter 4

Le statistiche sono relative alle installazioni del framework tramite Composer e non tengono in considerazioni i download manuali.

Una nuova struttura

CodeIgniter 4 ha un codice più snello rispetto alle precedenti versioni, oltre ad essere più performante e offrire agli sviluppatori maggiore sicurezza, rapidità e produttività nello sviluppo di applicazioni web.

Il file index.php, ossia il punto di accesso principale dell'applicazione, è stato spostato all'interno della cartella public e dunque al di fuori della root principale. Una scelta dettata principalmente da motivi di sicurezza, dato che in questo modo è possibile isolare agli utenti le cartelle dove è contenuto il codice vero e proprio.

Come vedremo più avanti la struttura delle cartelle è stata modificata ed è presente una cartella writable per conservare i file di lavoro generati dall'applicazione, come i log o la cache delle pagine web.

Vediamo adesso quali sono le novità più importanti introdotte in questa versione facendo un confronto con la precedente (CodeIgniter 3) tutt'ora supportata.

1. Requisiti minimi

Mentre CodeIgniter 3 è compatibile con PHP 5.6, per utilizzare CodeIgniter 4 è richiesta la versione 7.2 o successiva di PHP. Con questo cambiamento è possibile sfruttare tutte le nuove funzionalità nonché le migliori performance offerte dalla versione 7.0 del linguaggio e successive

Inoltre le seguenti estensioni PHP dovrebbero essere abilitate: intl, php-json, php-mbstring, php-mysqlnd, php-xml.

2. Struttura directory

La struttura delle directory e dei file è stata completamente rivista. Se nella versione 3 avevamo solamente due directory (application e system), in CodeIgniter 4 ne abbiamo cinque:

  • app - contiene tutto il codice dell'applicazione tra cui i controller, le viste, i modelli, varie configurazioni
  • system - in questa directory sono memorizzati i file che compongono il cuore (core) del framework.
  • public - contiene il file index.php nonché tutte le altre risorse accessibili tramite URL (css, js, etc...) e il file .htaccess.
  • writable - contiene le directory in cui l'applicazione ha necessità di scrivere: la cache, i logs, le sessioni e gli upload dell'utente.
  • test - utilizzata solo in fase di sviluppo, contiene alcune classi e altre utilità che è possibile utilizzare durante la scrittura dei test.

Inoltre, come già detto, le cartelle contententi il cuore della nostra applicazione non sono più accessibili direttamente.

3. Namespace

CodeIgniter 4 è scritto interamente in PHP 7 e utilizza i namespace, introdotti con PHP 5.3. Questo è molto importante poiché l'utilizzo di uno o più namespace è il modo migliore per organizzare i file e le classi di un'applicazione.

4. Autoloading

CodeIgniter 4 ha un processo di autoloading (caricamento automatico) molto più efficiente e uno dei fattori che aiuta è l'uso dei namespace. Mentre in CodeIgniter 3 è necessario configurare manualmente la maggior parte dei file da caricare.

5. Supporto nativo Entities

CodeIgniter 4 ha il supporto nativo per l'uso delle Entities, che aiutano a strutturare meglio la parte relativa al database dell'applicazione, ove ciascuna Entity è una classe che rappresenta una singola tabella del database. CodeIgniter 3 non aveva questa funzionalità ed era necessario utilizzare librerie di terze parti.

6. Prestazioni

CodeIgniter 4 ha prestazioni migliori rispetto a CodeIgniter 3, grazie soprattutto all'utilizzo di PHP 7 che ha fatto un notevole passo avanti in termini di performance rispetto alla versione 5 di PHP (consumo di memoria minore ed esecuzione script più veloce). Ricordiamo che per poter utilizzare CodeIgniter 4 è necessario PHP 7.2+.

7. Impostazioni

Mentre in CodeIgniter 3 era necessario eseguire un buon numero di configurazioni, con CodeIgniter 4 le impostazioni iniziali per l'avvio dell'applicazione sono davvero minime e riguardano principalmente i file App.php e Routes.php contenuti nella cartella localizzata in app/Config.

8. Supporto nativo per i file .env

CodeIgniter 4 ha il supporto nativo per i file .env, consentendo un'ottimizzazione delle impostazioni dei diversi ambienti in cui potrebbe essere in esecuzione l'applicazione (produzione, test e sviluppo). Questo non era presente nativamente in CodeIgniter 3.

9. Migrazione tra le versioni

CodeIgniter 4 non è compatibile con le versioni precedenti, quindi il processo di aggiornamento delle applicazioni dalla versione 3 alla versione 4 anche se fattibile richiede un pò di lavoro.

10. Conformità allo standard PSR

CodeIgniter 4 rispetta alcuni degli standard PSR attualmente in uso, tra cui:

  1. PSR-1: Basic Coding Standard
  2. PSR-3: Logger Interface
  3. PSR-4: Autoloading Standard
  4. PSR-6: Caching Interface
  5. PSR-7: HTTP Message Interface

11. Installazione tramite Composer

CodeIgniter 4 è scaricabile tramite Composer eseguendo il comando

composer create-project codeigniter4/framework

Poiché il core del framework si trova dentro la directory system, dopo ogni composer update i file contenuti dentro questa cartella non vengono aggiornati in automatico.

Nota: ricordiamo che Composer installa e tiene aggiornati solamente i file che si trovano dentro la cartella vendor.

Per risolvere questo problema è stato creato un ulteriore pacchetto (App Starter) sempre scaricabile da Packagist, dove è lo stesso core del framework ad essere una dipendenza.

Dopo aver eseguito il comando

composer create-project codeigniter4/appstarter

tutte le cartelle e i file del framework saranno installati nella root, eccetto il contenuto di system che si troverà dentro vendor.

Dopo ogni nuova release sarà sufficiente eseguire il seguente comando

composer update

per tenere aggiornato sia il core che le dipendenze di CodeIgniter.

12. Debugging

È stato integrato KINT, uno strumento di debug facile da usare ma potente e personalizzabile, utile per ottenere informazioni molto dettagliate sulle variabili utilizzate dalle nostre applicazioni.

Conclusioni

In conclusione, CodeIgniter 4 si rivela essere un ottimo strumento di supporto per gli sviluppatori, infatti oltre ad essere leggero, veloce, flessibile, sicuro e con una curva di apprendimento molto bassa come la precedente versione, adesso introduce alcune migliorie che lo rendono un framework moderno adatto allo sviluppo di applicazioni web semplici o complesse.

Nella pratica consente di essere produttivi in modo rapido e di realizzare siti e applicazioni web professionali fin da subito e senza dover stare a sbattere troppo la testa in complicate configurazioni. Tra le altre cose è probabilmente la migliore "palestra" per chi vuole passare dalla programmazione PHP pura a quella con architettura MVC.

La documentazione per questa versione è disponibile al seguente indirizzo https://codeigniter4.github.io/userguide/index.html.

Per richiedere nuove funzionalità è possibile aprire un topic sul forum all'indirizzo https://forum.codeigniter.com/forum-29.html.

Sviluppatore PHP Freelance

Stai cercando uno sviluppatore PHP? Ho oltre 10 anni di esperienza nello sviluppo web con questo linguaggio.

Contattami adesso!