back to top

Gestione dei Controllers in CodeIgniter

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.
Nel caso in cui il Controller preveda una sola funzione al suo interno, allora per utilizzarla basterà richiamare in URI il nome della relativa classe di appartenenza; nel caso in cui le funzioni siano invece più di una, l’ultimo segmento della URI dovrà corrispondere al nome della funzione che si desidera richiamare, diversamente verrà caricata la funzione "index()" in quanto considerata come predefinita per la classe. A questo proposito si analizzi il seguente esempio:
<?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()".

Pubblicitร 
Claudio Garau
Claudio Garau
Web developer, programmatore, Database Administrator, Linux Admin, docente e copywriter specializzato in contenuti sulle tecnologie orientate a Web, mobile, Cybersecurity e Digital Marketing per sviluppatori, PA e imprese.