Risorse
I plugin risorsa vanno considerati un modo generico di fornire sorgenti
di template o script PHP a Smarty. Alcuni esempi di risorse:
database, directory LDAP, memorie condivisse, socket, e così via.
Per ogni tipo di risorsa deve essere registrato un totale di 4 funzioni.
Ogni funzione riceverà la risorsa richiesta come primo parametro e l'oggetto
Smarty come ultimo parametro. Il resto dei parametri dipende dalla
funzione.
bool smarty_resource_name_source (string $rsrc_name, string &$source, object &$smarty)
bool smarty_resource_name_timestamp (string $rsrc_name, int &$timestamp, object &$smarty)
bool smarty_resource_name_secure (string $rsrc_name, object &$smarty)
bool smarty_resource_name_trusted (string $rsrc_name, object &$smarty)
Lo scopo della prima funzione è di recuperare la risorsa. Il suo
secondo parametro è una variabile passata per riferimento nella
quale memorizzare il risultato. Ci si aspetta che la funzione
restituisca true se è riuscita a recuperare
la risorsa e false nel caso opposto.
Lo scopo della seconda funzione è di indicare il momento dell'ultima
modifica effettuata sulla risorsa richiesta (nel formato timestamp
UNIX). Il secondo parametro è una variabile passata per riferimento
nella quale memorizzare il timestamp. Ci si aspetta che la funzione
restituisca true se è riuscita a determinare il
timestamp, e false nel caso opposto.
La terza funzione deve restituire true o
false, a seconda che la risorsa richiesta sia
sicura o no. Questa funzione è usata solo per risorse di template ma
deve ancora essere definita.
La quarta funzione deve restituire true o
false, a seconda che la risorsa richiesta sia
considerata affidabile o no. Questa funzione è usata solo per script
PHP richiesti con i tag include_php o
insert con l'attributo src.
Comunque, deve ancora essere definita per le risorse di template.
Vedere anche
register_resource(),
unregister_resource().
Esempio 16-10. plugin risorsa
<?php /* * Smarty plugin * ------------------------------------------------------------- * File: resource.db.php * Type: resource * Name: db * Purpose: Fetches templates from a database * ------------------------------------------------------------- */ function smarty_resource_db_source($tpl_name, &$tpl_source, &$smarty) { // fate qui le chiamate al db per ottenere il template // e popolare $tpl_source $sql = new SQL; $sql->query("select tpl_source from my_table where tpl_name='$tpl_name'"); if ($sql->num_rows) { $tpl_source = $sql->record['tpl_source']; return true; } else { return false; } }
function smarty_resource_db_timestamp($tpl_name, &$tpl_timestamp, &$smarty) { // fate qui la chiamata al db per popolare $tpl_timestamp. $sql = new SQL; $sql->query("select tpl_timestamp from my_table where tpl_name='$tpl_name'"); if ($sql->num_rows) { $tpl_timestamp = $sql->record['tpl_timestamp']; return true; } else { return false; } }
function smarty_resource_db_secure($tpl_name, &$smarty) { // diciamo che tutti i template sono sicuri return true; }
function smarty_resource_db_trusted($tpl_name, &$smarty) { // non si usa per i template } ?>
|
|