Os plugins de Recursos são como uma forma genérica de fornecer códigos fontes de template ou componentes de script PHP para a Smarty. Alguns exemplos de recursos: banco de dados, LDAP, memória compartilhada, sockets, e assim por diante.
Há um total de 4 funções que precisam estar registradas para cada tipo de recurso. Cada função receberá o recurso requisitado como o primeiro parâmetro e o objeto da Smarty como o último parâmetro. O resto dos parâmetros dependem da função.
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
;
A primeira função deve devolver o recurso. Seu segundo parâmetro é uma variável passada por
referência onde o resultado seria armazenado.
A função deve retornar true
se
ela está apta a devolver com sucesso o recurso e
caso contrário retorna false
.
A segunda função deve devolver a última modificação do
recurso requisitado (como um timestamp Unix).
O segundo parâmetro é uma variável passada por referência onde o timestamp seria armazenado.
A função deve retornar true
se o timestamp poderia ser determinado com sucesso,
e caso contrário retornaria false
.
A terceira função deve retornar true
ou
false
, dependendo do recurso requisitado
está seguro ou não. Esta função é usada
apenas para recursos de template mas ainda assim seria definida.
A quarta função deve retornar true
ou false
, dependendo
do recurso requisitado ser confiável ou não.
Esta função é usada apenas para componentes de
script PHP requisitados pelas tags include_php ou
insert com o atributo src
.
Entretanto, ela ainda assim mesmo seria definida para os recursos de template.
Veja também: register_resource(), unregister_resource().
Example 16.10. Plugin resource (recurso)
<?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) { // do database call here to fetch your template, // populating $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) { // faz o banco de dados chamar aqui para preencher $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) { // assume que todos os templates são seguros return true; } function smarty_resource_db_trusted($tpl_name, &$smarty) { // não usado para templates } ?>