Login
Libri
Home Argomenti Generali Helpers

Helpers

Share

Gli Helpers, come suggerisce il nome, aiutano in alucuni compiti. Ogni file helper è semplicemente un raccolta di funzioni di una particalre categoria. Ci sono gli URL Helpers, che aiutano nella creazione di links, ci sono Form Helpers che invece supportano la creazione di elementi di form, Text Helpers permettono la formattazione del testo, Cookie Helpers imposta e legge i cookies, File Helpers aiuta nella gestione dei files, etc.

Diversamente dalla maggior parte dei sistemi in CodeIgniter, gli Helpers non sono scritti nel formato Object Oriented. Sono semplicemente funzioni procedurali. Ogni funzioni helper adempie ad uno specifico compito, che non dipende da altre funzioni.

CodeIgniter non carica i File Helper in automatico, prima di utilizzarli è quindi cencessario caricarli. Una volta provveduto, saranno disponbili a livello globale e potranno essere utilizzati nei proprio controller e viste.

Generalmente gli Helpers si trovano nelle directory system/helpers, oppure system/application/helpers. CodeIgniter prima di tutto contrellerà la directory system/application/helpers. Se la directory non esiste o se lo specifico helper non viene trovato, allora CI andrà a cercarlo nella cartella globale system/helpers.

Caricare un Helper

Caricare un file helper file è una operazione abbastanza semplice:

$this->load->helper('<em>name</em>');

Dove nome è il nome del file dell'Helper, senza l'estensione .php o la parte "helper".

Per esempio, per caricare il file URL Helper, che ha come nome url_helper.php, si dovrà procedere così:

$this->load->helper('<em>url</em>');

Un helper può essere caricato in qualcunque punto all'interno delle funzioni del controller (oppure anche all'interno delle viste, anche se non è una buona pratica), solo dopo averlo caricato sarà disponibile. Si potrà caricare il proprio helpers all'interno del controller così che sarà dispnibile ad ogni funzione, oppure sarà possibile inizializzarlo all'interno di una specifica funzione che lo richiede.

Nota: La funzione che carica l'Helper non restituisce alcun valore, non è quindi possibile assegnarlo ad una variabile.

Caricamento di più Helpers

Se si ha necessità di utilizzare più di un helper è possibile specificarli atraverso un array:

$this->load->helper( array('helper1', 'helper2', 'helper3'));

Caricamento automatico dell'Helper

Se si trova utile utilizzare un helper in tutta la propria applicazione, CodeIgniter permette di caricarlo automaticamente durante l'inizializzazione del sistema. Questo è possibile farlo aprendo il file application/config/autoload.php file e aggiungendo l'helper desiderato nell'array di quelli che verranno caricati automaticamente.

Usare un Helper

Una volata caricato il file Helper contenente la funzione che si intende utilizzare, potrà essere richiamata come una normale funzione PHP.

Per esempioi, per creare un link usando la funzione  anchor() in un file vista, si dovrà procedere nel seguente modo:

<?php echo anchor('blog/comments', 'Click Here');?>

Dove "Click Here" è il nome del link, e "blog/comments" è l'URI alla controller/funzione sul quale si vuole in link.

"Estendere" gli Helpers

Per "estendere" un Helpers, basta creare un file nella cartella application/helpers/ con nome identico all'helper che si vuole estendere, ma con con il prefisso MY_ (questo prefisso è configurabile, vedi sotto come fare).

Se si necessità di incrementare delle funzionalità ad un helper già esistente - per esempio aggiungendo una o due funzioni, oppure cambiando il modo in cui agisce una particolare funzione - occorrerà sovrascrivre l'intero helper con la propria versione. In questo caso la cosa più semplice è "estendere" l'Helper. Si ha quindi la possibilità di aggiungere funzione ad un Helper o modificare il funzionamento di una già presente.

Per esempio, al fine di estendere la funzione nativa  Array Helper si creerà un file chiamato application/helpers/MY_array_helper.php, e si aggiungerà o sovrascriverà le funzioni:

// any_in_array() is not in the Array Helper, so it defines a new function
function any_in_array($needle, $haystack)
{
$needle = (is_array($needle)) ? $needle : array($needle);

foreach ($needle as $item)
{
if (in_array($item, $haystack))
{
return TRUE;
}
}

return FALSE;
}

// random_element() is included in Array Helper, so it overrides the native function
function random_element($array)
{
shuffle($array);
return array_pop($array);
}

Settare il Proprio Prefisso Your Own Prefix

Il prefisso da aggiungere al nome del file per "estendere" gli Helpers è lo stesso utilizzato per estendere le librerie e le classi del Core. Per settare un proprio prefisso, apri il file application/config/config.php file e cerca questa riga:

$config['subclass_prefix'] = 'MY_';

E Ora?

Nella sezione In the Helper è presente la lista di tutti gli Helper disponibili. Guardali e vedi che cosa fanno.

Ultimo aggiornamento ( Sabato 02 Ottobre 2010 05:46 )