Sumber daya
Plugin sumber daya diartikan sebagai cara umum atas penyediaan sumber
template atau komponen naskah PHP untuk Smarty. Beberapa contoh
sumber daya:
database, LDAP, memori berbagi, soket, dan seterusnya.
Ada empat fungsi yang perlu didaftarkan untuk setiap tipe sumber daya.
Setiap fungsi akan menerima sumber daya yang diminta sebagai paramneter
pertama dan obyek Smarty sebagai parameter terkahir. Parameter sisanya
tergantung pada fungsi.
bool smarty_resource_name_sourcestring $rsrc_namestring &$sourceobject &$smartybool smarty_resource_name_timestampstring $rsrc_nameint &$timestampobject &$smartybool smarty_resource_name_securestring $rsrc_nameobject &$smartybool smarty_resource_name_trustedstring $rsrc_nameobject &$smarty
Fungsi pertama, source() is supposed to retrieve
the resource. Its second parameter $source is a
variable passed by reference where the result should be
stored. The function is supposed to return &true; if
it was able to successfully retrieve the resource and &false; otherwise.
Fungsi kedua, timestamp() is supposed to
retrieve the last modification time of the requested resource, as a UNIX
timestamp. The second parameter $timestamp
is a variable passed by reference where the timestamp should be stored.
The function is supposed to return &true; if the timestamp could be
succesfully determined, or &false; otherwise.
Fungsi ketiga, secure()is supposed to return
&true; or &false;, depending on whether the requested resource is secure
or not. This function is used only for template resources but
should still be defined.
Fungsi keempat, trusted() seharusnya mengembalikan
&true; atau &false;, tergantung pada apakah sumber daya yang diminta
dipercaya atau tidak. Fungsi ini dipakai hanya untuk komponen naskah PHP
yang diminta oleh tag
{include_php} atau tag
{insert}
dengan atribut src. Akan tetapi, ini masih harus
didefinisikan meskipun untuk sumber daya template.
plugin sumber daya
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)
{
// lakukan pemanggilan database di sini untuk mempopulasikan $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)
{
// menganggap semua template aman
return true;
}
function smarty_resource_db_trusted($tpl_name, &$smarty)
{
// tidak dipakai untuk template
}
?>
]]>
LIhat juga
register_resource(),
unregister_resource().