Files
smarty/docs/ru/programmers/plugins/plugins-resources.xml
2008-05-25 15:06:11 +00:00

161 lines
6.7 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 0 Maintainer: tony2001 Status: ready -->
<sect1 id="plugins.resources">
<title>Ресурсы</title>
<para>
Плагины ресурсов описывают источники данных, из которых берется исходный
код шаблона или компоненты PHP-скрипта для Smarty. Вот примеры ресурсов:
базы данных, LDAP, разделяемая память (shared memory), сокеты, и прочее.
</para>
<para>
Необходимо 4 функции для того, чтобы зарегестрировать
каждый тип ресурса. Каждая такая функция получает запрашиваемый ресурс в качестве
первого параметра и объект Smarty как последний параметр.
Остальные параметры зависят от функции.
</para>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>smarty_resource_<replaceable>name</replaceable>_source</function></funcdef>
<paramdef>string <parameter>$rsrc_name</parameter></paramdef>
<paramdef>string <parameter>&amp;$source</parameter></paramdef>
<paramdef>object <parameter>&amp;$smarty</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>bool <function>smarty_resource_<replaceable>name</replaceable>_timestamp</function></funcdef>
<paramdef>string <parameter>$rsrc_name</parameter></paramdef>
<paramdef>int <parameter>&amp;$timestamp</parameter></paramdef>
<paramdef>object <parameter>&amp;$smarty</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>bool <function>smarty_resource_<replaceable>name</replaceable>_secure</function></funcdef>
<paramdef>string <parameter>$rsrc_name</parameter></paramdef>
<paramdef>object <parameter>&amp;$smarty</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>bool <function>smarty_resource_<replaceable>name</replaceable>_trusted</function></funcdef>
<paramdef>string <parameter>$rsrc_name</parameter></paramdef>
<paramdef>object <parameter>&amp;$smarty</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Первая функция получает ресурс. Ее первый
параметр, это переменная, переданная по ссылке. В нее будет сохранен результат.
Функция вернет <literal>true</literal> если
сможет удачно получить ресурс и
<literal>false</literal> в ином случае.
</para>
<para>
Вторая функция получает время последней модификации
запрошенного ресурса (в виде UNIX timestamp). Второй параметр
представляет собой переменную, переданную по ссылке, в которой и будет сохранено время.
Функция вернет <literal>true</literal> если
timestamp будет определен в правильной форме, и <literal>false</literal>
в ином случае.
</para>
<para>
Третья функция возвращает <literal>true</literal> или
<literal>false</literal> в зависимости от того, является ли
запрашиваемый ресурс безопасным. Эта функция используется только для ресурсов шаблона, но
в любом случае должна быть определена.
</para>
<para>
Четвертая функция возвращает <literal>true</literal> или
<literal>false</literal> в зависимости от того, заслуживает ли запрашиваемый ресурс доверия
(is trusted) или нет. Эта функция используется только для компонентов PHP-скрипта,
запрошенных тэгом <command>include_php</command> или
<command>insert</command> с <structfield>src</structfield>
атрибутом. Тем не менее, она должна объявляться даже для ресурсов шаблона.
</para>
<para>
Смотрите также:
<link linkend="api.register.resource">register_resource()</link>,
<link linkend="api.unregister.resource">unregister_resource()</link>.
</para>
<example>
<title>Плагин ресурса</title>
<programlisting role="php">
<![CDATA[
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
* Файл: resource.db.php
* Тип: resource
* Имя: db
* Назначение: Получает шаблон из базы данных
* -------------------------------------------------------------
*/
function smarty_resource_db_source($tpl_name, &$tpl_source, &$smarty)
{
// выполняем обращение к базе данных для получения шаблона
// и занесения полученного результата в в $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)
{
// выполняем обращение к базе данных для присвоения значения $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)
{
// предполагаем, что шаблоны безопасны
return true;
}
function smarty_resource_db_trusted($tpl_name, &$smarty)
{
// не используется для шаблонов
}
?>
]]>
</programlisting>
</example>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->