Svantaggi del codice PHP nativo
Quando abbiamo la necessità di realizzare Web app, dal semplice sito Web alla piattaforma di e-commerce, dal blog alle logiche back-end per gestire connessioni con Web Services e Database, è spesso necessario avvalersi di un framework.
Un framework consente di "non reinventare la ruota", mentre scrivendo puro codice PHP si è costretti a sviluppare "da zero" ogni applicazione. Il primo svantaggio di questo approccio è rappresentato dall'ingente quantità di tempo da dedicare alla pianificazione ed alla realizzazione della struttura del codice.
Il secondo svantaggio è la mancanza di una struttura coesa e performante che funga da base per ogni singolo dettaglio dell'applicazione, e che possa essere riutilizzata per lo sviluppo di ulteriori applicazioni, siano esse legate a quella corrente o meno.
Un gradino intermedio: usare un proprio framework PHP
Per ovviare a questi problemi si può realizzare un proprio framework PHP. Invece di scrivere codice PHP (e non solo) partendo da zero ad ogni applicazione, si può dedicare del tempo alla creazione di una struttura applicativa e gestionale, contenente funzionalità di alto livello, da utilizzare come base per ogni progetto.
In questa collezione di codice lo sviluppatore può includere funzionalità comuni, come la ricerca e la produzione di output HTML, snippet per la validazione dei form, controlli per la gestione delle mail e per la gestione della sicurezza, cookies, sessioni e cosi via, in una struttura definita e riutilizzabile. I seguenti esempi mostrano, in modo molto semplificato, una differenza tra la scrittura di codice PHP senza framework e con un framework:
Output senza Framework:
<?php
function stampaHTML($title, $meta, $root) {
echo "<html>" . "<head>" . "<title>" . $title . "</title>"
. "<meta name="description" content=\"{$meta}\" />" . "</head>";
}
function connect($param1, $param2, $param3) {
$connection = mysqli($param1, $param2, $param3);
// crea azioni con il database
}
// altre funzioni PHP
?>
stampaHTML("MY PAGE", "my page description", $_SERVER['DOCUMENT_ROOT']);
<body>
<h1>My Page</h1>
<?php
connect();
// crea operzioni con il database
?>
</body>
Output con framework:
<?php
// utilizza il Framework
include "MyFramework.php";
$project = new Project('title', 'my page description');
$project->load( $project->pageName, $params );
?>
Come possiamo vedere, avvalersi di un proprio framework PHP rappresenta un passo in avanti rispetto alla scelta di scrivere codice PHP da zero, specialmente se consideriamo la quantità di tempo risparmiata per ogni applicazione.
Ovviamente, la qualità dello sviluppo e del risultato finale dipenderanno, cosi come in assenza di framework, dalla qualità del codice. Da un punto di vista prettamente tecnico non esistono differenze. Un framework PHP, per definirsi tale, deve semplificare realmente la vita dello sviluppatore ed offrire strumenti che garantiscono risultati concreti in un contesto di produzione reale.
Tuttavia esiste una scelta migliore, il gradino più alto nella pianificazione/realizzazione di un'applicazione Web: utilizzare un framework PHP professionale.
Un framework non è un CMS
E' bene chiarire questo concetto che a volte genera confusione nel neofita. Un framework PHP infatti non è un CMS. Un CMS (Content Management System) è uno strumento che risiede ad un livello più alto nella piramide produttiva. Tendenzialmente non occorre saper programmare o scrivere snippet di codice per usare un CMS, dato che questi sono progettati per ridurre al minimo, se non ad eliminare totalmente, il contatto con il codice stesso.
Prendiamo il caso di Guida WordPress: una volta effettuata la procedura di installazione e messa online (che richiede un minimo di competenze), la fatica dello sviluppatore è finita: occorrerà installare il tema desiderato, prendere dimestichezza con gli strumenti di pubblicazione, e l'applicazione verrà generata automaticamente.
Il discorso cambia se vogliamo realizzare dei temi o delle funzionalità personalizzate da includere nei nostri progetti, ma di solito vale questa distinzione: un CMS serve all'utente finale, mentre un framework PHP serve allo sviluppatore. Un CMS inoltre, in molti casi, è sviluppato avvalendosi di un framework PHP.
Framework PHP professionali
Ora che abbiamo una panoramica su quali siano i vantaggi che derivano dall'utilizzo di un framework, possiamo capire perché cosi tanti sviluppatori hanno deciso di dedicarsi alla realizzazione di questo tipo di prodotto. I vantaggi che abbiamo nell'utilizzare un framework PHP professionale sono molteplici:
- anche in questo caso, non dobbiamo "reinventare la ruota" scrivendo di nostro pugno tutte le funzionalità necessarie alla nostra applicazione. Controlli, sicurezza, struttura gerarchica e funzionalità sono già inclusi;
- la qualità del codice è di alto livello: sviluppatori esperti in PHP sono le menti dietro al codice che puoi utilizzare, e questo è sinonimo di garanzia
- lo sviluppo del framework si avvale di una community attiva, che testa ogni singola funzionalità dello stesso framework in una moltitudine di situazioni reali. Qualsiasi problematica viene rimossa in tempi di solito molto rapidi;
- un framework PHP professionale si avvale delle ultime tecnologie di sviluppo, e delle ultime tecniche e paradigmi di programmazione studiati appositamente per semplificare la vita dello sviluppatore e produrre risultati di alto livello
In Rete sono disponibili tantissimi framework PHP professionali, ma in questa guida ci occuperemo di Code Igniter. Oltre a fornire tutti gli strumenti necessari per la realizzazione di un'applicazione Web moderna, esso consente di unire il secondo e il terzo "gradino" della scala dello sviluppo presentata in questa lezione, perché permette di estendere le funzionalità di base (core) con funzionalità personalizzate, e addirittura di ristrutturare in base alle proprie esigenze la logica d'azione e parte della nomenclatura utilizzata.