back to top

CodeIgniter Libraries

Le Libraries sono una raccolta di classi pronte all’uso messe a disposizione da CodeIgniter per gli scopi più vari, il framerwork fornisce infatti classi per la gestione della posta elettronica, per l’uploading dei file, per la criptazione, per la validazione degli input inviati dai form, per la manipolazione delle immagini, per l’encoding Zip e per molte altre finalità. Le Libraries sono salvate sul percorso:

system/libraries
Per caricare una Library, nella maggior parte dei casi non si utilizza una chiamata diretta ma un’istruzione posta all’interno di un Controller che deve rispettare la seguente sintassi:
$this->load->library('nome_classe');
Se per esempio si desidera caricare la Library per la gestione della posta elettronica, sarà necessario utilizzare la seguente istruzione:
$this->load->library('email');
Una volta terminata la fase di caricamento, sarà possibile utilizzare le funzioni messe a disposizione dalla Library evocata, l’esempio seguente mostra come, a seguito della chiamata alla Library per la gestione delle email, sia possibile utilizzare tutte le funzioni necessarie per l’invio della posta elettronica:
// Invio di una email con una Library di CodeIgniter

// caricamento della Library per la gestione delle email
$this->load->library('email');

// mittente dell'email
$this->email->from('[email protected]', 'Luca');

// destinatario dell'email
$this->email->to('[email protected]');

// indirizzi e-mail del destinatario in copia conoscenza
$this->email->cc('[email protected]');

// indirizzo e-mail del destinatario in copia conoscenza nascosta
$this->email->bcc('[email protected]');

// oggetto dell'email
$this->email->subject('Invio email con CodeIgniter');

// definizione del messaggio
$this->email->message('Email inviata con la Library Email.');

// invio del messaggio
$this->email->send();
Come anticipato, di default CodeIgniter mette a disposizione numerose Libraries già pronte all’uso, ma non manca la possibilità per lo sviluppatore di creare le proprie Libraries personali così come di estendere o rimpiazzare le librerie già disponibili; le classi sono infatti strutturate in modo molto semplice:
  • si esegue un controllo sul percorso di base alle librerie del framework (definita dalla costante BASEPATH), nel caso in cui il controllo restituisca esito negativo il codice presente nella classe non verrà eseguito per via dell’azione della funzione exit();
  • opzionalmente si possono definire le variabili che saranno manipolate dalle funzioni messe a disposizione dalla classe;
  • si definiscono le funzioni di classe e gli eventuali valori di ritorno delle stesse.
Per la creazione di nuove classi è bene rispettare alcune regole basate su convenzioni per la sintassi delle classi:
  • i file in cui devono essere salvate le classi devono avere iniziale maiuscola, per esempio "Nome_classe.php";
  • i nomi di classe devono essere dichiarati con lettera iniziale maiuscola, ad esempio "Nome_classe";
  • estensione del file a parte (che deve essere ".php"), il nome del file della Library e quello della classe devono essere identici.
L’esempio seguente mostra un semplicissimo prototipo di quella che dovrebbe essere la sintassi da utilizzare per la definizione di una classe:
<?php 
// controllo sul percorso della Library
if (!defined('BASEPATH')) 
{
  // interruzione in caso di esito negativo del controllo
  exit('No direct script access allowed');
}
// dichiarazione della classe
class Nomeclasse {
  // funzione di classe
  function funzione() {
    // operazioni ed eventuale valore di ritorno
    ...
  }
}
?>
Una volta definita la nuova classe, questa potrà diventare una Library disponibile per il framework e dovrà essere salvata su un percorso diverso da quello previsto per le Libraries di CodeIgniter:
system/application/libraries
Ora la classe sarà pronta per essere caricata dall’interno di un Controller attraverso l’utilizzo di una semplice istruzione che in cui la classe potrà essere richiamata sia con iniziale maiuscola che minuscola:
$this->load->library('nomeclasse');
In questo modo si avrà accesso alle funzioni messe a disposizione dalla classe caricata, inoltre sarà possibile accedere direttamente (per istanza) alle funzioni specificando prima del loro nome il nome della classe di appartenenza come l’inziale minuscola:
$this->nomeclasse->funzione();
E’ poi possibile passare dinamicamente dei parametri alla funzione di classe semplicemente utilizzandoli come secondo argomento per il metodo library(), come nell’esempio seguente:
// Passaggio dinamico di variabili ad una Library personalizzata

// definizione dei parametri sotto forma di array
$vars = array('animale' => 'gatto', 'orologio' => 'digitale');

// passaggio dei parametri all'istruzione di caricamento della classe
$this->load->library('Nomeclasse', $vars);
Gli stessi parametri potranno essere passati direttamente alla funzione di classe all’interno del codice della Library:
// Passaggio dinamico di variabili alla funzione di classe
function funzione($vars) {
  // operazioni ed eventuale valore di ritorno
  ...
}

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.
Articolo precedente
Articolo successivo