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

Code Igniter: funzionalità di un Helper

Scopriamo come utilizzare le funzionalità degli Helper del framework PHP Code Igniter e come estenderli tramite delle procedure di sovrascrittura.
Scopriamo come utilizzare le funzionalità degli Helper del framework PHP Code Igniter e come estenderli tramite delle procedure di sovrascrittura.
Link copiato negli appunti

Una volta caricato (o auto-caricato), un Helper è pronto per essere utilizzato nel nostro Controller. Vediamo un esempio:

class Welcome extends CI_Controller {
	public function index()
	{
        // carica gli helper URL, HTML e Array
		$this->load->helper(array('url', 'html', 'array'));
        // lavora sfruttando le loro funzionalità
        // crea un tag h1, h2 e h3
        echo heading('Testo del tag h1', 1);
        echo heading('Testo del tag h2', 2);
        echo heading('Testo del tag h3', 3);
        // stampa l'attuale URL root dell'applicazione, definita nel file di configurazione.
        // questo URL non contiene il segmento 'index.php'
        echo base_url();
        // l'helper 'element' permette di recuperare i valori di un array, svolgendo implicitamente
        // un controllo sull'esistenza dell'indice in questione
        $a = array(
            'name' => 'riccardo',
            'lastname' => 'degni',
            'born'  => 'italy'
        );
        // stampa 'riccardo'
        echo element('name', $a);
        // l'indice non è definito. stampa 'non definito'
        echo element('age', $a, 'non definito'); 
	}
}

Nel precedente esempio abbiamo usufruito delle funzioni degli Helpers URL, HTML e Array. La funzione heading dell'helper HTML consente di stampare un tag heading, passando come primo parametro il testo e come secondo parametro la grandezza dell'intestazione (da 1 a 6).

La funzione base_url dell'Helper URL consente di recuperare l'attuale root della nostra applicazione, sprovvista del segmento index.php. A questa funzione è possibile passare una stringa che identifica un segmento che verrà aggiunto alla root, utile nel caso in cui si vogliano inserire path che puntano a particolari file o immagini.

La funzione element dell'Helper Array permette infine di recuperare i valori di un array, svolgendo implicitamente un controllo sull'esistenza dell'indice in questione, dunque evitando errori di tipo warning. Se l'indice non è definito, verrà restituito NULL, se invece viene specificato un terzo parametro, verrà utilizzato questo valore in sostituzione del valore all'indice mancante.

"Estendere" gli Helpers

Nel caso in cui si vogliano estendere le funzionalità di un Helper esistente, occorre creare un file e collocarlo nella cartella application/helpers, avente nome identico a quello dell'Helper da estendere, ma con l'aggiunta del prefisso (di default) MY_ (maiuscolo). Ad esempio, se vogliamo estendere l'Array Helper, creeremo il seguente file: application/helpers/MY_array_helper.php,.

E' possibile sostituire questo prefisso con uno personalizzato, modificando il file di configurazione application/config/config.php:

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

In realtà il termine "estendere" è leggermente incorretto, dato che gli Helpers sono funzioni procedurali è più sensato il termine sovrascrivere. Se una funzione nel nuovo file non è presente nell'Helper originale, allora verrà aggiunta normalmente alla collezione, altrimenti la nuova funzione sovrascriverà quella precedente:

// questa funzione non è nativamente presente nell'Array Helper, dunque verrà aggiunta alla collezione
function any_inarray($needle, $haystack)
{
    $needle = is_array($needle) ? $needle : array($needle);
    foreach ($needle as $item)
    {
            if (in_array($item, $haystack))
            {
                    return TRUE;
            }
    }
    return FALSE;
}
// questa funzione è invece presente nell'Array Helper, dunque la vecchia funzionalità verrà sovrascritta
function random_element($array)
{
    shuffle($array);
    return array_pop($array);
}

Ti consigliamo anche