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( |
$rsrc_name, | |
&$source, | ||
&$smarty) ; |
string $rsrc_name
;string &$source
;object &$smarty
;bool smarty_resource_name_timestamp( |
$rsrc_name, | |
&$timestamp, | ||
&$smarty) ; |
string $rsrc_name
;int &$timestamp
;object &$smarty
;bool smarty_resource_name_secure( |
$rsrc_name, | |
&$smarty) ; |
string $rsrc_name
;object &$smarty
;bool smarty_resource_name_trusted( |
$rsrc_name, | |
&$smarty) ; |
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().
Example 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 } ?>