Mr. Webmaster Menu
  • Home
  • Cerca
  • Didattica
    • A
    • Android
    • Apache
    • Apple
    • ASP
    • ASP.Net
    • C
    • Cloud
    • CMS
    • CSS
    • D
    • Database
    • E
    • Editor
    • G
    • Grafica
    • H
    • Hosting
    • HTML
    • J
    • Java
    • Javascript
    • jQuery
    • L
    • Leggi e Fisco
    • Linux
    • M
    • Mobile
    • MySQL
    • N
    • NET Framework
    • P
    • Photoshop
    • PHP
    • Primi Passi
    • Programmazione
    • R
    • Reti
    • Ruby
    • S
    • Sicurezza
    • Social Media
    • SQL
    • W
    • Web Design
    • Web Marketing
    • Web Server
    • Windows
    • WordPress
    • X
    • XML
    • Di tendenza
    • Android Studio
    • Bootstrap
    • GDPR
    • Hosting Wordpress
    • Node.js
    • Registrazione Domini
  • Download
    • Software
    • Script
    • Plugin CMS
    • Flash Movies
    • Sound Loops
    • Templates
    • Web Grafica
    • Font Gratis
  • Risorse
    • SEO Tools
    • WebApps
  • News
  • Blog
  • Forum
  • Network
    • Toolset.it
    • SiteMarket.it
    • Codalo.it
  • Corsi on-line
Mr. Webmaster → PHP → Guida CodeIgniter → Gli Hooks

CodeIgniter Hooks

  • CommentaScrivi un commento
  • ForumDiscuti sul forum
  • PrecedenteLe Libraries
  • SuccessivoURI Routing e Caching
  • Pubblicato il
  • 01/01/2009
  • Autore
  • Claudio Garau

Gli Hooks sono delle particolari componenti del framework CodeIgniter che permettono di apportare delle modifiche sul funzionamento della piattaforma senza per questo motivo dover andare ad incidere sul suo core, evitando in questo modo di generare instabilità e malfunzionamenti.
Si può per esempio avere la necessità che un determinato script venga caricato precedentemente o successivamente ad uno specifico Controller, un Hook permetterà di far questo in fase di esecuzione senza dover agire sul codice del framework.

La possibilità di abilitare o di disabilitare gli Hooks è data da un parametro modificabile presente all'interno del codice del file sul percorso:

system/application/config/config.php
Il parametro in questione è $config['enable_hooks'], esso può essere impostato tramite l'associazione dei valori booleani TRUE (abilita gli Hooks) e FALSE (disabilità questa funzionalità).
In CodeIgniter gli Hooks sono definiti all'interno di uno specifico file che si trova sul percorso:
system/application/config/hooks.php
Per la definizione di un Hook è necessaria una particolare sintassi che prevede la creazione di un array strutturato sul modello dell'esempio seguente:
// Definizione di un Hook
$hook['pre_controller'] = array(
                                // nome della classe
                                'class'    => 'Classe',
                                // nome della funzione di classe
                                'function' => 'Funzione',
                                // nome del file di classe
                                'filename' => 'Classe.php',
                                // cartella del file di classe
                                'filepath' => 'hooks',
                                // parametri da elaborare
                                'params'   => array('a', 'b', 'c')
                               );
Si analizzino in modo approfondito le diverse componenti del prototipo di Hooks appena presentato:
  • class: corrisponde al nome della classe che si desidera richiamare, è possibile anche utilizzare una funzione procedurale al posto di una classe, in questo caso non dovrà essere specificato alcun valore per l'elemento "class";
  • function: la funzione che verrà invocata tramite l'Hook;
  • filename: è il nome del file che contiene la classe;
  • filepath: è il percorso al file che contiene la classe;
  • params: i parametri che dovranno essere elaborati dallo script.
Per quanto riguarda l'elemento filepath, è necessario sottolineare che la cartella che contiene lo script deve essere salvata all'interno della cartella della propria applicazione; se per esempio il proprio script è stato salvato nella cartella:
system/application/hooks
il valore da associare all'elemento filepath dovrà essere semplicemente hooks, se invece lo script si trova sul percorso:
system/application/hooks/scripts
il valore da associare all'elemento filepath dovrà essere "hooks/scripts".

Continua dopo la pubblicità...

Gli array che contengono gli elementi degli Hooks sono detti Hook points, l'array $hook['pre_controller'] è appunto un Hook point; quelli disponibili nativamente tramite il framework sono i seguenti:

  • pre_system: viene chiamato immediatamente dopo la fase di esecuzione, permette unicamente il caricamento delle classi per il benchmark e quelle relatice agli Hooks stessi;
  • pre_controller: viene chiamato precedentemente a qualsiasi Controller, permette il caricamento di classi base come quelle per il routing e la sicurezza;
  • post_controller_constructor: viene chiamato subito dopo l'istanza di un Controller ma prima di qualsiasi metodo di classe;
  • post_controller: viene chiamato subito dopo l'esecuzione completa di un Controller;
  • display_override: presiede all'override (riscrittura di un metodo ereditato) della funzione _display(), utilizzata per inviare gli output al Web browser alla fine di un'esecuzione;
  • cache_override: consente di utilizzare una propria funzione al posto della funzione di default _display_cache() in modo da creare un sistema di cache personalizzato;
  • scaffolding_override: consente il triggering (commutazione) delle richieste di scaffolding (l'argomento non sarà approfondito in quanto deprecato a partire dalla versione 1.6.0 di CodeIgniter);
  • post_system: viene chiamato dopo l'invio dell'output al browser al termine di tutte le esecuzioni.
E' possibile effettuare più chiamate ad uno stesso Hook attraverso la semplice creazione di un array multidimensionale:
// Chiamate multiple ad uno stesso Hook

// prima chiamata
$hook['pre_controller'][] = array(
                                  'class' => 'Classe',
                                  ....
                                 );
// seconda chiamata
$hook['pre_controller'][] = array(
                                  'class' => 'SecondaClasse',
                                  ....
                                 );
Si noti che l'ordine delle chiamate determinerà anche l'ordine di esecuzione.

Sfoglia le lezioni

← Le Libraries
→ URI Routing e Caching

Commenti

I commenti sono sottoposti alle linee guida di moderazione e prima di essere visibili devono essere approvati da un moderatore.
  • Facebook
  • Twitter
  • Google+
  • YouTube
  • Feed RSS
Frequenta i nostri corsi
  • Corso LinuxCorso Linux
    Guida completa al sistema open-source. A partire da 39 €
  • Corso MySQLCorso MySQL
    Gestione del database open-source. A partire da 39 €
  • Corso PHPCorso PHP
    Creare siti web dinamici avanzati con PHP e MySQL. A partire da 49 €
Vedi anche...
  • Cos'è CodeIgniter
  • Installazione e configurazione di CodeIgniter
  • Gestione delle URL in CodeIgniter
  • Gestione dei Controllers in CodeIgniter
  • CodeIgniter: le Views per la creazione di template
Mr. Webmaster
  • RSS
  • Contattaci
  • Torna su
IKIweb
© 2003 - 2019 Mr. Webmaster
Mr. Webmaster ® è un marchio registrato.
E' vietata ogni forma di riproduzione.
IKIweb Internet Media S.r.l. - P.IVA 02848390122

Parliamo di noi: chi siamo / cronologia
Contatti: pubblicità / contattaci / segnala abusi
Note Legali: condizioni d'uso / privacy / cookie
Altro: sondaggi / feed