Le Librerie rappresentano, allo stesso modo degli Helpers, un componente aggiuntivo importante per Code Igniter. Le Librerie apportano diverse funzionalità extra per la realizzazione di applicazioni Web sul lato server.
A differenza però degli Helpers, che sono una collezione di funzioni proceduali indipendenti una dall'altra, le Librerie contengono vere e proprie classi complete, e si avvalgono dunque delle funzioanlità della OOP.
La seguente lista rappresenta tutte le classi contenute nelle Librerie offerte da Code Igniter:
- Benchmarking Class
- Caching Driver
- Calendaring Class
- Shopping Cart Class
- Config Class
- Email Class
- Encrypt Class
- Encryption Library
- File Uploading Class
- Form Validation
- FTP Class
- Image Manipulation Class
- Input Class
- Javascript Class
- Language Class
- Loader Class
- Migrations Class
- Output Class
- Pagination Class
- Template Parser Class
- Security Class
- Session Library
- HTML Table Class
- Trackback Class
- Typography Class
- Unit Testing Class
- URI Class
- User Agent Class
- XML-RPC and XML-RPC Server Classes
- Zip Encoding Class
Come possiamo notare, le funzioanlità offerte dalle Librerie coprono quasi completamente ogni possibile feature di sviluppo, dalla gestione delle mail a quella della sicurezza, fino al profiling dell'applicazione ed alle funzionalità FTP.
Includere una Libreria
Per includere una Libreria all'interno del nostro Controller, ci avvaliamo del solito Loader:
$this->load->library('nome_libreria');
Anche in questo caso, è possibile caricare una moltitudine di librerie attraverso un'unica chiamata a load
passando come primo argomento un array i cui indici sono i nomi delle classi da includere:
$this->load->library(array('libreria-1', 'libreria-2'));
Le Librerie, essendo componenti di sistema, sono collocate nella cartella system/libraries/
.
Utilizzare le funzionalità di una Libreria
A questo punto, vediamo come usufruire delle funzionalità di alcune Librerie. Nel seguente esempio utilizzeremo le classi Mail
e UserAgent
:
class Welcome extends CI_Controller {
public function index()
{
// carica le librerie Mail e UserAgent
$this->load->helper(array('mail', 'user_agent'));
// configuriamo l'occorrente per inviare la nostra mail
$mail = array(
'from' => 'tuamailfrom@mail.com',
'to' => 'tuamailto@mail.com'
'cc' => 'altratuamail@mail.com'
'bcc' => 'altratuamail2@mail.com',
'name' => 'Nome Mail From',
'subject' => 'Soggetto Mail',
'message' => 'Testo della Mail'
);
$this->email->from($mail['from'], $mail['name']);
$this->email->to($mail['to']);
$this->email->cc($mail['cc']);
$this->email->bcc($mail['bcc']);
$this->email->subject($mail['subject]);
$this->email->message($mail['message]);
// ed ora inviamo la mail
$this->email->send();
// usiamo i controlli della classe UserAgent per ottenere informazioni sul dispositivo in uso
if ($this->agent->is_browser()) {
$agent = $this->agent->browser() . ' ' . $this->agent->version();
}
elseif ($this->agent->is_robot()) {
$agent = $this->agent->robot();
}
elseif ($this->agent->is_mobile()) {
$agent = $this->agent->mobile();
}
else {
$agent = 'Unidentified User Agent';
}
// stampa il tipo di dispositivo in uso
echo $agent;
// stampa il tipo di sistema operativo in uso
echo $this->agent->platform();
}
}
La Libreria Mail
consente una gestione molto elegante (ed orientata agli oggetti) della configurazione e delle procedure di inoltro di e-mail. Ovviamente in questo caso la buona riuscita dell'operazione dipenderà anche dal pacchetto mail che il server sta utilizzando. Nel caso di un server locale che non dispone di default di questa funzionalità sarà necessaria una procedura di installazione di un server mail dedicato.
La Libreria UserAgent
consente una gestione completa delle informazioni del device in uso dall'utente: la tipologia del dispositivo, la tipologia del sistema operativo (Windows, Mac, Linux), la tipologia e la versione del browser e una moltitudine di altre informazioni relative.
In questa guida non ci occuperemo di analizzare nel dettaglio tutte le classi offerte da Code Igniter, ma avremo modo di utilizzare alcune di esse nel corso dei tutorial e delle demo contenute nelle successive lezioni.