I Controllers possono essere considerati come la parte fondamentale di un’applicazione in PHP creata con CodeIgniter; questi particolari componenti infatti determinano il modo in cui deve essere gestita una richiesta operata attraverso il protocollo HTTP. Fondamentalmente un Controller si configura come un comune file di classe denominato in modo che possa essere associato ad una URI (Uniform Resource Identifier); una URI non è altro che un’URL intesa nel suo significato più generale, cioè è una stringa che identifica in modo univoco una risorsa (come per esempio un indirizzo Web).
Per comprendere meglio quanto appena detto, si analizzi il formato della seguente URI:
miosito.com/index.php/sito/
Nel caso specifico, "sito" è il componente della URI che identifica il Controller presente nel file "sito.php"; sarà quindi questo Controller ad essere caricato da CodeIgniter sulla base del termine associato all’ultima parte della URI.Un esempio pratico aiuterà a chiarire ulteriormente il concetto di Controller; si analizzi il seguente listato:
<?php
// creazione di un semplice Controller
class Sito extends Controller {
// definizione di una funzione di classe
function index() {
// output della funzione
echo 'Questa stringa è prodotta da un Controller';
}
}
?>
Il codice esposto dovrà essere editato all’interno di un file denominato "sito.php" che dovrà essere salvato nel percorso:
system/application/controllers/
Quindi, digitando nella barra degli indirizzi del proprio browser la già nota URI:
miosito.com/index.php/sito/
la risposta dell’applicazione sarà quella di restituire in output la stringa:
Questa stringa è prodotta da un Controller.
Si faccia ora l’analisi degli elementi che costituiscono un Controller:
- "class Sito extends Controller": in questa porzione di codice viene definita una classe ("Sito") che è sotto-classe della classe principale "Controller" fornita nativamente da CodeIgniter; si noti come (non per semplice convenzione) le classi debbano essere indicate con l’iniziale maiuscola.
- "function index()": è una funzione, priva di argomenti, il cui scopo nel caso proposto è quello di stampare la stringa che ne è anche il valore di ritorno.
<?php
// creazione di un semplice Controller
class Sito extends Controller {
// definizione della funzione predefinita
function index() {
// output della funzione di default
echo 'Questa stringa è prodotta dalla funzione predefinita.';
}
// definizione di una seconda funzione di classe
function secondafunzione() {
// output della seconda funzione
echo 'Questa stringa è prodotta dalla seconda funzione.';
}
}
?>
Per poter richiamare la seconda funzione sarà necessario digitare la seguente URL:
miosito.com/index.php/sito/secondafunzione/
Il nome della funzione da utilizzare dovrà quindi essere sempre associato all’ultimo segmento dell’URL, dopo il riferimento alla classe di appartenenza, altrimenti verrà caricata soltanto la funzione predefinita "index()".