CodeIgniter

Francesco Ciannavei

CodeIgniter

CodeIgniter è il framework PHP su cui ho l'esperienza più consolidata. In STCC ho portato circa 40 controller del software con cui si redigono i testi normativi di Camera e Senato da CodeIgniter 3 a CodeIgniter 4, e da PHP 5 a PHP 8.

La migrazione da CodeIgniter 3 a 4

CodeIgniter 4 non è un aggiornamento di CodeIgniter 3: struttura, namespace e molte API sono diversi, quindi il codice non si sposta così com'è. Ho scelto di procedere un controller alla volta: copiavo il controller nel nuovo progetto e sistemavo quello che mancava o era superato (prima i model mancanti, poi il loro aggiornamento al nuovo standard, poi le view, poi gli helper) fino a far funzionare quel pezzo, e poi passavo al successivo. La nuova versione è arrivata in staging mentre ero in STCC; quando me ne sono andato non era ancora in produzione.

Cosa si è rotto in staging

Portando CodeIgniter 4 in staging sono emersi due problemi. Il primo era un 404 quando CodeIgniter gira in una sottocartella con indexPage impostato: ho proposto una correzione con la pull request #9607, che è stata chiusa senza merge. Il secondo: alcune funzioni helper di CodeIgniter 3 non esistono più in CodeIgniter 4, e le ho reimplementate. Il lavoro di debug dietro questi due casi è descritto nella pagina sul debugger.

Competenze tecniche

Conosco a fondo l'architettura MVC di CodeIgniter, il sistema di routing, la gestione di librerie e helper personalizzati, il Query Builder e il pattern Active Record, il caching, la gestione delle sessioni e i middleware di CodeIgniter 4.

Pull request nell'ecosistema CodeIgniter

  • CodeIgniter4 #9543: ho aggiunto application/octet-stream al tipo MIME stl nella configurazione Mimes. Accettata.
  • CodeIgniter4 #9621: ho corretto la documentazione, non aggiornata, su come escludere più gruppi di test. Accettata.
  • CodeIgniter4 #9607: la proposta di correzione per il 404 in sottocartella. Chiusa senza merge.
  • Shield #1282: ho completato le traduzioni italiane del pacchetto di autenticazione. Accettata.

Per lavorare alla migrazione con DDEV ho anche aggiunto a DDEV il tipo di progetto CodeIgniter 4: la storia è nella pagina su Docker.

Il front end di un'app RAG

Sempre in STCC, CodeIgniter 4 era il front end di un'app RAG: inoltrava le richieste a un'API Python che gestiva embedding e chat.

Rating
8/10

Dove l'ho usato: