codeigniter
Uso di ganci
Ricerca…
Abilitare i ganci
La funzione hooks può essere abilitata / disabilitata globalmente impostando la seguente voce nel file
application/config/config.php
:
$config['enable_hooks'] = TRUE;
Definire un gancio
I hook sono definiti nel file
application/config/hooks.php
. Ogni hook è specificato come array con questo prototipo
$hook['pre_controller'] = array(
'class' => 'MyClass',
'function' => 'Myfunction',
'filename' => 'Myclass.php',
'filepath' => 'hooks',
'params' => array('beer', 'wine', 'snacks')
);
L'indice dell'array è correlato al nome del punto di aggancio specifico che si desidera utilizzare. Nell'esempio sopra, il punto di aggancio è pre_controller
. Di seguito è riportato un elenco di punti di aggancio. I seguenti elementi dovrebbero essere definiti nel tuo hook array associativo:
class Il nome della classe che desideri invocare. Se preferisci utilizzare una funzione procedurale invece di una classe, lascia vuoto questo elemento.
funzione Il nome della funzione (o metodo) che si desidera chiamare.
nomefile Il nome del file che contiene la tua classe / funzione.
percorso-file Il nome della directory che contiene il tuo script.
params Qualsiasi parametro tu voglia passare al tuo script. Questo articolo è opzionale
Punti di aggancio
pre_system
Chiamato molto presto durante l'esecuzione del sistema. A questo punto sono stati caricati solo il benchmark e la classe hooks. Nessun routing o altri processi sono accaduti.
pre_controller
Chiamato immediatamente prima che qualcuno dei tuoi controller venga chiamato. Sono state eseguite tutte le classi di base, il routing e i controlli di sicurezza.
post_controller_constructor
Chiamato immediatamente dopo l'istanziazione del controller, ma prima che si verifichino chiamate di metodo.
post_controller
Chiamato immediatamente dopo l'esecuzione completa del controller.
display_override
Sostituisce il metodo _display()
, utilizzato per inviare la pagina finalizzata al browser Web alla fine dell'esecuzione del sistema. Questo ti permette di usare la tua metodologia di visualizzazione. Si noti che sarà necessario fare riferimento al $this->CI =& get_instance()
con $this->CI =& get_instance()
e quindi i dati finalizzati saranno disponibili chiamando $this->CI->output->get_output()
.
cache_override
Consente di chiamare il proprio metodo invece del metodo _display_cache()
nella Libreria di output. Questo ti permette di usare il tuo meccanismo di visualizzazione della cache.
post_system
Chiamato dopo che la pagina finale renderizzata viene inviata al browser, al termine dell'esecuzione del sistema dopo che i dati finalizzati sono stati inviati al browser.
Esempio di pre controller hook utilizzando CodeIgniter
Nella cartella application/hooks
, crea un file con nome Blocker.php
e incolla il codice seguente.
<?php
class Blocker {
function Blocker(){
}
/**
* This function used to block the every request except allowed ip address
*/
function requestBlocker(){
if($_SERVER["REMOTE_ADDR"] != "49.248.51.230"){
echo "not allowed";
die;
}
}
}
?>
In application/config/hooks.php
, dichiara il seguente hook.
$hook['pre_controller'] = array(
'class' => 'Blocker',
'function' => 'requestBlocker',
'filename' => 'Blocker.php',
'filepath' => 'hooks',
'params' => ""
);
In application/config/config.php
, imposta il seguente valore come true
Definire un gancio
Gli hook sono definiti nel file application/config/hooks.php
. Ogni hook è specificato come array con questo prototipo:
$hook['pre_controller'] = array(
'class' => 'MyClass',
'function' => 'Myfunction',
'filename' => 'Myclass.php',
'filepath' => 'hooks',
'params' => array('bread', 'wine', 'butter')
);
-
CLASS
: la classe che desideri invocare se è un codice procedurale, lasciala vuota. -
FUNCTION
: il nome della funzione che si desidera chiamare. -
FILENAME
- Il nome del file che contiene la tua classe / funzione. -
FILEPATH
- Posizione del file di hook. -
PARAMS
- Parametro aggiuntivo se necessario è facoltativo