Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Gli URL di Code Igniter

Analizziamo il funzionamento degli URL in Code Igniter e come essi siano alla alla base della struttura MVC del framework PHP.
Analizziamo il funzionamento degli URL in Code Igniter e come essi siano alla alla base della struttura MVC del framework PHP.
Link copiato negli appunti

Il preludio all'MVC

Prima di analizzare come Code Igniter gestisce il nostro precedente output tramite il Controller Welcome, è bene evidenziare il funzionamento degli URL, che è intrinsecamente legato alla struttura MVC.

In Code Igniter gli URL svolgono un compito fondamentale. Code Igniter "sovrascrive" il comportamento di default degli URL, che sono basati sulle query (quando il metodo utilizzato per la richiesta HTML è GET), utilizzando invece un approccio basato sui segmenti.

Prendiamo ad esempio un URL composto da: tuosito.com/index.php/className/methodName/paramValue. Tralasciando il segmento index.php, che funge da segmento zero o front Controller, abbiamo:

  • il primo segmento rappresenta il nome del Controller che deve essere invocato;
  • il secondo segmento rappresenta il metodo del precedente Controller che deve essere richiamato;
  • il terzo segmento (ed altri ulteriori segmenti) rappresenta un parametro che verrà passato al metodo richiamato.

La gestione degli URL da parte di Code Igniter dunque è la seguente:

tuosito.com/index.php/className/methodName/paramValue

dove className è il nome del Controller da invocare, methodName è il nome del metodo del Controller da chiamare e paramValue è il parametro da passare al precedente metodo.

Questo comportamento di base è personalizzabile tramite alcuni parametri di configurazione aggiuntivi e con appositi metodi da utilizzare nei Controller. La pagina di default che possiamo visualizzare nella nostra applicazione di esempio, è raggiungibile anche tramite l'URL http://localhost/codeigniter_app/index.php/welcome.

Rimuovere "index.php"

Se vogliamo ottenere un URL più pulito e professionale dobbiamo rimuovere il segmento index.php. Un risultato ottenibile tramite la modifica del file .htaccess. Per fare ciò il server PHP deve consentire il mod_rewrite. Ad esempio, puoi configurare l'.htaccess di un'applicazione in modo che qualsiasi richiesta HTTP (ad esclusione di cartelle e file realmente esistenti) venga gestita come una richiesta diretta a index.php:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

A questo punto potrai rimuovere l'index.php dagli URL digitando ad esempio:

http://localhost/codeigniter_app/welcome

ed ottenere lo stesso risultato.

Routing

Partendo dagli URL la gestione di default da parte di Code Igniter è dunque la seguente:

  1. index.php è il front Controller che inizializza tutto l'ambiente Code Igniter e funge da segmento zero.
  2. Il Router analizza la richiesta HTTP e determina quali azioni effettuare.
  3. Se esiste un file di cache, verrà mandato direttamente nell'output saltando il normale funzionamento di default. Questo permette di diminuire drasticamente la mole di lavoro da parte del server nel caso di applicazioni che gestiscono una quantità consistente di dati.
  4. Viene effettuato un controllo sulla richiesta HTTP che viene filtrata.
  5. Viene chiamato il Controller in questione, che a sua volta chiamerà metodi, Model e View opportuni definiti nella logica del Controller stesso.
  6. L'output finale viene generato e fornito al browser. Se il caching è attivo l'output viene salvato nella cache e verrà ripreso alle successive chiamate.

Questa semplice struttura (che può comunque essere modificata e personalizzata ad hoc) è alla base della struttura MVC di Code Igniter.

Ti consigliamo anche